当前位置: 首页 > news >正文

用队列实现栈

队列实现栈

  • 用队列实现栈
    • 一、队列数据结构的基础定义与操作
      • (一)队列节点与队列结构体定义
      • (二)队列大小计算函数
      • (三)队列初始化函数
      • (四)队列销毁函数
      • (五)队列元素入队函数
      • (六)队列是否为空判断函数
      • (七)队列元素出队函数
      • (八)获取队列头部元素函数
      • (九)获取队列尾部元素函数
    • 二、用队列实现栈的具体实现
      • (一)栈结构体定义
      • (二)栈的创建函数
      • (三)栈元素入栈函数
      • (四)栈元素出栈函数
      • (五)获取栈顶元素函数
      • (六)栈是否为空判断函数
      • (七)栈的销毁函数

用队列实现栈

在数据结构的世界里,栈和队列是两种基础且重要的数据结构。栈遵循后进先出原则,而队列遵循先进先出(FIFO)原则。那么,本文将带你实现队列对栈的实现。

下面为leetcode题目链接
队列实现栈

一、队列数据结构的基础定义与操作

(一)队列节点与队列结构体定义

c
typedef struct queuenode{int data;struct queuenode* next;
}queuenode;typedef struct queue{struct queuenode* phead;struct queuenode* ptail;
}queue;

这里定义了两个结构体。queuenode 结构体用于表示队列中的节点,每个节点包含一个 data 成员用于存储数据,以及一个 next 指针用于指向下一个节点。queue 结构体则表示整个队列,包含两个指针 phead 和 ptail,分别指向队列的头部和尾部。

(二)队列大小计算函数

c
int queuesize(queue* pq)
{if(pq == NULL)return 0;int count = 1;queuenode* pcur = pq->phead;while(pcur != pq->ptail){pcur = pcur->next;count++;}return count;
}

queuesize 函数用于计算队列的大小。首先检查传入的队列指针是否为空,如果为空则直接返回 0。然后通过遍历队列,从头部开始,直到当前节点等于尾部节点,每遍历一个节点,计数器 count 就加 1,最终返回队列的大小。需要注意的是,这里初始化 count 为 1,是因为如果队列不为空,至少有一个节点(即头部节点)。

(三)队列初始化函数

c
void queueinit(queue* pq)
{assert(pq);pq->phead = pq->ptail = NULL;
}

queueinit 函数用于初始化队列。通过 assert 宏确保传入的队列指针不为空,然后将队列的头部指针 phead 和尾部指针 ptail 都初始化为 NULL,表示一个空队列。

(四)队列销毁函数

c
void queuedestroy(queue* pq)
{queuenode* pcur = pq->phead;while(pcur){queuenode* next = pcur->next;free(pcur);pcur = next;}pq->phead = pq->ptail = NULL;
}

queuedestroy 函数用于销毁队列。首先从队列头部开始,依次释放每个节点的内存空间。通过一个临时指针 next 保存当前节点的下一个节点,然后释放当前节点,再将 pcur 指向下一个节点,直到遍历完整个队列。最后将队列的头部和尾部指针都置为 NULL,防止野指针。

(五)队列元素入队函数

c
void queuepush(queue* pq,int x)
{queuenode* newnode = (queuenode*)malloc(sizeof(queuenode));if(newnode == NULL)return ;newnode->data = x;newnode->next = NULL;if(pq->phead == NULL)pq->phead = pq->ptail = newnode;else{   pq->ptail->next = newnode;pq->ptail = newnode;}
}

queuepush 函数用于将一个元素 x 加入到队列中。首先通过 malloc 分配一个新的节点空间,如果分配失败(即 newnode 为 NULL)则直接返回。然后将新节点的数据成员 data 赋值为 x,并将其 next 指针置为 NULL。如果当前队列为空(即 phead 为 NULL),则将新节点同时赋值给 phead 和 ptail;否则,将新节点链接到队列尾部,并更新 ptail 指针。

(六)队列是否为空判断函数

c
bool queueempty(queue* pq)
{if(pq->phead == NULL)return true;elsereturn false;
}

queueempty 函数用于判断队列是否为空。只需检查队列的头部指针 phead 是否为 NULL,如果为 NULL 则表示队列为空,返回 true,否则返回 false。

(七)队列元素出队函数

c
void queuepop(queue* pq)
{if(pq == NULL)return;if(pq->phead == pq->ptail){   free(pq->phead);pq->phead = pq->ptail = NULL;}else{queuenode* next = pq->phead->next;free(pq->phead);pq->phead = next;}  
}

queuepop 函数用于从队列中移除头部元素。首先检查队列指针是否为空,如果为空则直接返回。如果队列中只有一个元素(即 phead 等于 ptail),则直接释放该节点,并将 phead 和 ptail 都置为 NULL。否则,保存头部节点的下一个节点指针,释放头部节点,然后将 phead 指向保存的下一个节点。

(八)获取队列头部元素函数

c
int queuefront(queue* pq)
{if(pq->phead == NULL)return -1;return pq->phead->data;
}

queuefront 函数用于获取队列头部的元素。如果队列为空(即 phead 为 NULL),则返回一个特殊值(这里是 -1)表示错误。否则,返回 phead 所指向节点的 data 成员。

(九)获取队列尾部元素函数

c
int queueback(queue* pq)
{if(pq->phead == NULL)return -1;return pq->ptail->data;
}

queueback 函数用于获取队列尾部的元素。同样,如果队列为空则返回 -1,否则返回 ptail 所指向节点的 data 成员。

二、用队列实现栈的具体实现

(一)栈结构体定义

c
typedef struct {struct queue* q1;struct queue* q2;
} MyStack;

这里定义了一个 MyStack 结构体,用于表示用队列实现的栈。它包含两个队列指针 q1 和 q2,通过这两个队列来模拟栈的操作。

(二)栈的创建函数

c
MyStack* myStackCreate() {MyStack* pst = (MyStack*)malloc(sizeof(MyStack));pst->q1 = (queue*)malloc(sizeof(queue)); pst->q2 = (queue*)malloc(sizeof(queue));queueinit(pst->q1);queueinit(pst->q2);return pst;
}

myStackCreate 函数用于创建一个新的栈。首先通过 malloc 分配 MyStack 结构体的内存空间,然后分别为 q1 和 q2 分配队列的内存空间,并调用 queueinit 函数初始化这两个队列,最后返回创建好的栈指针。

(三)栈元素入栈函数

c
void myStackPush(MyStack* obj, int x) {if(!queueempty(obj->q1))queuepush(obj->q1,x);elsequeuepush(obj->q2,x);
}

myStackPush 函数用于将一个元素 x 压入栈中。通过判断 q1 是否为空,如果 q1 不为空,则将元素加入到 q1 中;否则将元素加入到 q2 中。这样保证了在任何时刻,只有一个队列中有元素,另一个队列为空。

(四)栈元素出栈函数

c
int myStackPop(MyStack* obj) {queue* emp = obj->q1;queue* noneemp = obj->q2;if(!queueempty(obj->q1)){emp = obj->q2;noneemp = obj->q1;}while(queuesize(noneemp) > 1){queuepush(emp,queuefront(noneemp));queuepop(noneemp);}int top = queuefront(noneemp);queuepop(noneemp);return top;
}

myStackPop 函数用于弹出栈顶元素。首先确定哪个队列为空,哪个队列不为空(通过判断 q1 是否为空来交换 emp 和 noneemp 的指向)。然后将不为空的队列中除了最后一个元素之外的所有元素依次出队并加入到空队列中,这样最后一个元素就成为了栈顶元素。取出这个元素并返回,同时将其从队列中移除。

(五)获取栈顶元素函数

c
int myStackTop(MyStack* obj) {queue* emp = obj->q1;queue* noneemp = obj->q2;if(!queueempty(obj->q1)){emp = obj->q2;noneemp = obj->q1;}return noneemp->ptail->data;
}

myStackTop 函数用于获取栈顶元素。同样先确定不为空的队列,然后直接返回该队列尾部元素(因为在实现中,栈顶元素始终在不为空队列的尾部)。

(六)栈是否为空判断函数

c
bool myStackEmpty(MyStack* obj) {return queueempty(obj->q1)&& queueempty(obj->q2);
}

myStackEmpty 函数用于判断栈是否为空。由于栈是通过两个队列实现的,所以当两个队列都为空时,栈为空,返回 true,否则返回 false。

(七)栈的销毁函数

c
void myStackFree(MyStack* obj) {queuedestroy(obj->q1);queuedestroy(obj->q2);free(obj);obj = NULL;
}

myStackFree 函数用于销毁栈。首先调用 queuedestroy 函数分别销毁 q1 和 q2 两个队列,然后释放 MyStack 结构体的内存空间,并将指针置为 NULL,防止野指针。

相关文章:

用队列实现栈

队列实现栈 用队列实现栈一、队列数据结构的基础定义与操作(一)队列节点与队列结构体定义(二)队列大小计算函数(三)队列初始化函数(四)队列销毁函数(五)队列元…...

Android WebView深度性能优化方案

一、启动阶段优化 预初始化策略 冷启动优化:在Application或后台线程提前初始化WebView new Thread(() -> {WebView preloadWebView new WebView(getApplicationContext());preloadWebView.loadUrl("about:blank"); }).start();WebView复用池 private…...

国标GB28181视频平台EasyCVR打造线下零售平台视频+AI全流程监管坚实防线

一、背景概述 在全球经济增长放缓、电商崛起、经营成本攀升的形势下,零售行业正经历深刻变革。数字化转型成为新零售发展的必由之路,但多数零售企业在信息化建设上困难重重,既缺乏足够重视,又因过高投入而犹豫。 随着大数据、人工…...

QML中打印Item的坐标

在 QML 中,你可以通过多种方式获取和打印 Item 的坐标信息。以下是几种常见的方法: 1. 打印相对坐标(相对于父项) qml Item {id: myItemx: 50y: 100width: 200height: 200Component.onCompleted: {// 打印相对于父项的坐标cons…...

基于【Lang Chain】构建智能问答系统的实战指南

🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Lang Chain 2、LangChain在问答系统中的核心优…...

Vue使用axios实现:上传文件、下载文件

Vue 使用 axios 框架,系列文章: 《Vue使用axios实现Ajax请求》 《Vue使用axios二次封装、解决跨域问题》 《Vue使用axios实现:上传文件、下载文件》 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。Axios 提供了一些方便…...

泊松分布详解:从理论基础到实际应用的全面剖析

泊松分布详解:从理论基础到实际应用的全面剖析 目录 引言:事件的罕见性与随机计数泊松分布的历史源流泊松分布的数学定义与性质 概率质量函数 (PMF)累积分布函数 (CDF)期望、方差与其他矩矩生成函数 (MGF) 与特征函数 (CF) 泊松分布的严格推导 极限推导…...

PHP爬虫教程:使用cURL和Simple HTML DOM Parser

一个关于如何使用PHP的cURL和HTML解析器来创建爬虫的教程,特别是处理代理信息的部分。首先,我需要确定用户的需求是什么。可能他们想从某个网站抓取数据,但遇到了反爬措施,需要使用代理来避免被封IP。不过用户没有提到具体的目标网…...

# 更换手机热点后secureCRT无法连接centOS7系统

更换手机热点后secureCRT无法连接centOS7系统 一、问题描述 某些情况下,我们可能使用手机共享热点而给电脑联网。本来用一个手机热点共享网络时,SecureCRT可以正常连接到CentOS 7虚拟机,当更换一个手机热点时,突然发现SecureCR…...

【集成电路版图设计学习笔记】2. 基本绘制的layer层和电路失效机制

一、基本的版图层次 1. 金属层(Metal Layers) 金属层主要起到互连的作用,完成基本电路器件的连接金属线的材质通常是铝或者铜,一般在线条比较粗的情况下,即特征尺寸比较粗的,一般是用铝制作的。在先进工艺…...

SQL学习笔记-聚合查询

非聚合查询和聚合查询的概念及差别 1. 非聚合查询 非聚合查询(Non-Aggregate Query)是指不使用聚合函数的查询。这类查询通常用于从表中检索具体的行和列数据,返回的结果是表中的原始数据。 示例 假设有一个名为 employees 的表&#xff…...

Profibus DP主站转modbusTCP网关与dp从站通讯案例

Profibus DP主站转modbusTCP网关与dp从站通讯案例 在当前工业自动化的浪潮中,不同协议之间的通讯转换成为了提升生产效率和实现设备互联的关键。Profibus DP作为一种广泛应用的现场总线技术,与Modbus TCP的结合,为工业自动化系统的集成带来了…...

【Linux】41.网络基础(2.3)

文章目录 2.3 TCP协议2.3.5 理解TIME_WAIT状态2.3.6 解决TIME_WAIT状态引起的bind失败的方法(作业)2.3.7 理解 CLOSE_WAIT 状态2.3.8 滑动窗口2.3.9 流量控制 2.3 TCP协议 2.3.5 理解TIME_WAIT状态 现在做一个测试,首先启动server,然后启动client,然后用Ctrl-C使server终止,这…...

C++多态知识点梳理

多态 多态的概念: 多态就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 比如构成多态的俩个父子类,我们调用同一个函数,可能会产生不同的行为,比如普通人买票全价&…...

Python批量处理PDF图片详解(插入、压缩、提取、替换、分页、旋转、删除)

目录 一、概述 二、 使用工具 三、Python 在 PDF 中插入图片 3.1 插入图片到现有PDF 3.2 插入图片到新建PDF 3.3 批量插入多张图片到PDF 四、Python 提取 PDF 图片及其元数据 五、Python 替换 PDF 图片 5.1 使用图片替换图片 5.2 使用文字替换图片 六、Python 实现 …...

计算机网络分层模型:架构与原理

前言 计算机网络通过不同的层次结构来实现通信和数据传输,这种分层设计不仅使得网络更加模块化和灵活,也使得不同类型的通信能够顺利进行。在网络协议和通信体系中,最广为人知的分层模型有 OSI模型 和 TCP/IP模型。这两种模型分别定义了计算…...

算法-mysql笔记

寻找用户推荐人 mysql判断数据是空 IS null 非空 IS NOT null 584. 寻找用户推荐人 - 力扣(LeetCode) # Write your MySQL query statement below SELECTname FROMCustomer WHEREreferee_id ! 2 OR referee_id IS null 文章概览 当查询到有多…...

销售易CRM:技术架构与安全性能的深度解析

一、技术架构:云计算与微服务的完美结合 销售易CRM基于云计算架构,采用微服务设计理念,确保系统的高可用性和扩展性。这种架构不仅提高了系统的性能和稳定性,还为企业提供了灵活的定制化能力。 云计算架构的优势 高可用性&…...

Python用户管理系统深度解析(附源码):从类设计到安全实现的完整指南

目录 一、核心类结构全解 1.1 类定义与属性设计 代码解析: 二、注册功能代码逐行解析 2.1 用户名验证模块 功能实现: 2.2 密码设置流程 关键机制: 2.3 数据存储实现 文件操作要点: 三、登录安全机制全剖析 3.1 黑名单…...

【linux】使用LNMP环境+Discuz论坛源程序

我使用的版本是linux9.3、Discuz X3.5、nginx1.20、mariadb10.5、php8.0 整体结构 LNMP Linux Nginx mariadb PHP Nginx 最初于2004年10月4日为俄罗斯知名门户站点而开发的Nginx是一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖特点:…...

鸿蒙开发-动画

1. 动画-动画特效 // 定义接口 (每个列表项的数据结构) interface ImageCount {url: stringcount: number }// 需求1: 遮罩层显隐 透明度opacity 0-1 层级zIndex -1~99 // 需求2: 图片缩放 缩放scale 0-1Entry Component struct Index {// 基于接口, 准备数据State images…...

itext7 html2pdf 将html文本转为pdf

1、将html转为pdf需求分析 经常会看到爬虫有这样的需求,将某一个网站上的数据,获取到了以后,进行分析,然后将需要的数据进行存储,也有将html转为pdf进行存储,作为原始存档,当然这里看具体的需求…...

设计模式:模板模式 - 固定流程与灵活扩展的完美结合

一、为什么使用模板模式? 权限校验、数据处理、用例设计等流程虽然遵循固定步骤,但每个具体实现却总有不同。如果没有合适的设计,重复代码会堆积,导致系统复杂度增加,维护成本上升。那如何解决这个问题,让…...

Java 设计模式:组合模式详解

Java 设计模式:组合模式详解 组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组织成树形结构,以统一的方式处理单个对象和对象集合。组合模式适用于需要表示“部分-整体”层次结构的场景,例…...

使用命令打开电脑的[服务]窗口

1.首先打开[开始],找到[运行], 2.或者用快捷命令“windows键R键”命令打开运行, 3.然后输入命令“services.msc”, 4.点[确定]就可以进入电脑的[服务]窗口了...

语音识别——根据声波能量、VAD 和 频谱分析周围是否有人说话

语音活动检测(Voice Activity Detection,简称VAD)。简单来说,VAD就是用来判断一段音频里有没有人说话的技术。在实时语音识别的场景里,这个技术特别重要,因为它决定了什么时候把采集到的音频数据扔进大模型…...

C++算法优化实战:破解性能瓶颈,提升程序效率

C算法优化实战:破解性能瓶颈,提升程序效率 在现代软件开发中,算法优化是提升程序性能的关键手段之一。无论是在高频交易系统、实时游戏引擎,还是大数据处理平台,算法的高效性直接关系到整体系统的性能与响应速度。C作…...

阿里滑块 231 231纯算 水果滑块 拼图 1688滑块 某宝 大麦滑块 阿里231 验证码

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! # 欢迎交流 wjxch1004...

vs code Cline 编程接入Claude 3.7的经济方案,且保持原生接口能力

在当今快速发展的科技时代,自动化编程成为提高工作效率的重要手段。Cline AI自动编程工具,凭借其强大的智能算法,能够快速生成高质量的代码,帮助开发者节省大量的时间和精力。从简单的脚本到复杂的应用程序,Cline都能轻…...

kubectl命令补全以及oc命令补全

kubectl命令补全 1.安装bash-completion 如果你用的是Bash(默认情况下是)&#xff0c;先安装补全功能支持包 sudo apt update sudo apt install bash-completion -y2.为kubectl 启用补全功能 会话中临时&#xff1a; source <(kubectl completion bash)持久化配置&#x…...

css解决边框四个角有颜色

效果 html <div class"gradient-corner">2021年</div>css background:/* 左上角横线 */linear-gradient(90deg, rgb(5, 150, 247) 9px, transparent 0) 0 0,/* 左上角竖线 */linear-gradient(0deg, rgb(5, 150, 247) 9px, transparent 0) 0 0,/* 右上…...

快速入手K8s+Docker+KubeSphere+DevOps

引用&#xff1a;云原生Java架构师的第一课K8sDockerKubeSphereDevOps_哔哩哔哩_bilibili 学习K8sDockerKubeSphereDevOps的可以学习该视频...

Spark-SQL核心编程

DataFrame 创建 DataFrame 在 Spark SQL 中 SparkSession 是创建 DataFrame 和执行 SQL 的入口&#xff0c;创建 DataFrame 有三种方式&#xff1a;通过 Spark 的数据源进行创建&#xff1b;从一个存在的 RDD 进行转换&#xff1b;还可以从 Hive Table 进行查询返回。 从…...

Go 1.24 新方法:编写性能测试用例方法 testing.B.Loop 介绍

Go 开发者在使用 testing包编写基准测试用例时&#xff0c;如果不注意&#xff0c;可能会遇到各种陷阱。这些陷阱&#xff0c;导致基准测试结果不准确。Go1.24 版本引入了一种新的基准测试编写方式&#xff0c;它同样易用&#xff0c;并且可以帮助规避编写基准测试时的一些坑。…...

【神经网络结构的组成】深入理解 转置卷积与转置卷积核

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 …...

GpuGeek:重构AI算力基础设施,赋能产业智能升级

在数字经济与实体经济深度融合的今天&#xff0c;人工智能已成为推动产业变革的核心驱动力。作为AI技术落地的关键支撑&#xff0c;算力基础设施正经历从"资源供给"向"服务赋能"的范式转变。GpuGeek凭借创新的技术架构和运营模式&#xff0c;重新定义了AI算…...

(2025亲测可用)Chatbox多端一键配置Claude/GPT/DeepSeek-网页端配置

1. 资源准备 API Key&#xff1a;此项配置填写在一步API官网创建API令牌&#xff0c;一键直达API令牌创建页面创建API令牌步骤请参考API Key的获取和使用API Host&#xff1a;此项配置填写https://yibuapi.com/v1查看支持的模型请参考这篇教程模型在线查询 2. ChatBox网页版配…...

质变科技发布自主数据分析MCP Server

2025年4月9日&#xff0c;质变科技正式发布Relyt AI MCP&#xff08;Model Context Protocol&#xff09;&#xff0c;结合Relyt AI 在自主数据分析领域的前沿积累与MCP的开放连接能力&#xff0c;我们为用户带来了一个更智能、更灵活的数据交互生态系统。这一发布不仅拓展了Re…...

【17】Strongswan bus详解2

add_listener&#xff1a; &#xff08;1&#xff09;初始化一个entry&#xff0c;并将要添加的listener赋值entry。 &#xff08;2&#xff09;添加到bus的listeners链表的尾部。 remove_listener&#xff1a; &#xff08;1&#xff09;遍历listeners&#xff0c;通过内存位置…...

【Windows】系统安全移除移动存储设备指南:告别「设备被占用」弹窗

Windows系统安全移除移动存储设备指南&#xff1a;告别「设备被占用」弹窗 解决移动硬盘和U盘正在被占用无法弹出 一、问题背景 使用Windows系统时&#xff0c;经常遇到移动硬盘/U盘弹出失败提示「设备正在使用中」&#xff0c;即使已关闭所有可见程序。本文将系统梳理已验证…...

DeepSeek 与开源:肥沃土壤孕育 AI 硕果

当 DeepSeek 以低成本推理、多模态能力惊艳全球时&#xff0c;人们惊叹于国产AI技术的「爆发力」&#xff0c;却鲜少有人追问&#xff1a;这份爆发力的根基何在&#xff1f; 答案&#xff0c;藏在中国开源生态二十余年的积淀中。 从倪光南院士呼吁「以开源打破垄断」&#xf…...

[从零开始学数据库] 基本SQL

注意我们的主机就是我们的Mysql数据库服务器 这里我们可以用多个库 SQL分类(核心是字段的CRUD)![](https://i-blog.csdnimg.cn/img_convert/0432d8db050082a49258ba8a606056c7.png) ![](https://i-blog.csdnimg.cn/img_convert/bdf5421c2b83e22beca12da8ca89b654.png) 重点是我…...

uniapp开发android原生插件-java版本

一、uniapp官方文档 uni原生插件文档 二、开发流程 1、检测本地uniapp的版本号 2、根据版本号&#xff0c;下载uni提供的对应android的sdk对应demo 下载地址&#xff1a;Android 离线SDK - 正式版 | uni小程序SDK 下载文件后&#xff0c;复制出UniPlugin-Hello-AS&#xff…...

git在IDEA中使用技巧

git在IDEA中使用技巧 merge和rebase 参考&#xff1a;IDEA小技巧-Git的使用 git回滚、强推、代码找回 参考&#xff1a;https://www.bilibili.com/video/BV1Wa411a7Ek?spm_id_from333.788.videopod.sections&vd_source2f73252e51731cad48853e9c70337d8e cherry pick …...

DeepSeek 接入 Excel 完整教程

一、前期准备 1.1 获取 DeepSeek API 密钥 注册 DeepSeek 平台 访问 DeepSeek 官方网站&#xff08;或指定的 API 服务平台&#xff0c;如硅基流动等&#xff09;。若尚未注册&#xff0c;按照平台指引创建新账号并完成登录。 创建 API 密钥 进入用户控制面板&#xff0c;找到…...

【项目管理】第15章 项目风险管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...

如何将自己的项目推送到GitHub上面去

将项目推送到GitHub的流程总结 以下是将本地项目推送到GitHub仓库的完整流程&#xff1a; 1. 初始化Git仓库&#xff08;如果尚未初始化&#xff09; cd 项目目录 git init2. 配置远程仓库 # 添加远程仓库地址 git remote add origin https://github.com/用户名/仓库名.git…...

C/C++基础

C开发环境 纯语言开发要求&#xff1a;CIDE。 极简C/C 语法规则 仅记原始规则&#xff0c;把握编程的本质&#xff0c;不做孔乙己&#xff0c;要做说干就干的平头哥。 原始的规则&#xff1a; 各“语法单位”&#xff08;组成部分&#xff09;使用任意个&#xff08;至少1个…...

Qt炫酷仪表盘

Qt学习优化的一款汽车仪表控件,根据github上面开源的进行优化,主要使用QPainter实现的一款炫酷仪表盘,其中的渐变效果比较有感觉 实现结果 仪表盘 实现源码 h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QTimer&…...

云渗透一(云租户渗透⼊⻔)

云平台介绍 阿⾥云 阿⾥云创⽴于 2009 年,服务着制造、⾦融、政务、交通、医疗、电信、能源等众多领域的领军企业,包 括中国联通、12306 、中⽯化、中⽯油、⻜利浦、华⼤基因等⼤型企业客户,以及微博、知乎、锤⼦科技 等明星互联⽹公司。 应⽤程序访问令牌 - T1527 云实例…...