当前位置: 首页 > news >正文 中煤建设集团网站兴宁市网站建设 news 2025/10/26 4:15:18 中煤建设集团网站,兴宁市网站建设,做阿里云网站的公司,网站制作样板文章目录 目录 前言 一、栈 1.栈的概念及结构 2.栈的实现 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空#xff0c;如果为空返回非零结果#xff0c;如果不为空返回0 销毁栈 二、队列 1.队列的概念及结构 2.队列的实现 初始化队列 队尾入队列 队头出队列 获… 文章目录 目录 前言 一、栈 1.栈的概念及结构 2.栈的实现 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空如果为空返回非零结果如果不为空返回0 销毁栈 二、队列 1.队列的概念及结构 2.队列的实现 初始化队列 队尾入队列 队头出队列 获取队列队头元素 获取队列队尾元素 获取队列中有效元素个数 检测队列是否为空如果为空返回非零结果如果非空返回0 销毁队列 最后 前言 本篇文章内容讲述了栈和队列的概念结构、分类与函数声明部分以及对于各个函数的实现。 以下内容仅供参考欢迎各位大佬批评指正呦~ 提示以下是本篇文章正文内容下面案例可供参考 一、栈 1.栈的概念及结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 2.栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的 代价比较小。 // 下面是定长的静态栈的结构实际中一般不实用所以我们主要实现下面的支持动态增长的栈 typedef int STDataType; #define N 10 typedef struct Stack {STDataType a[N];int _top; // 栈顶 }ST;// 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }ST;// 初始化栈 void StackInit(ST* ps); // 入栈 void StackPush(ST* ps, STDataType x); // 出栈 void StackPop(ST* ps); // 获取栈顶元素 STDataType StackTop(ST* ps); // 获取栈中有效元素个数 int StackSize(ST* ps); // 检测栈是否为空如果为空返回非零结果如果不为空返回0 int StackEmpty(ST* ps); // 销毁栈 void StackDestroy(ST* ps); 初始化栈 void StackInit(ST* ps) {assert(ps);ps-a (STDatatype)malloc(sizeof(STDatatype) * 4);if (ps-a NULL){perror(malloc fail);exit(-1);}ps-top 0;ps-capacity 4; } 入栈 void StackPush(ST* ps, STDatatype x) {assert(ps);if (ps-top ps-capacity){STDatatype* tmp (STDatatype*)realloc(ps-a,ps-capacity*2*sizeof(STDatatype));if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity * 2;}ps-a[ps-top] x;ps-top;} 出栈 void StackPop(ST* ps) {assert(ps);assert(!StackEmpty(ps));ps-top--; } 获取栈顶元素 STDatatype StackTop(ST* ps) {assert(ps);assert(!StackEmpty(ps));return ps-a[ps-top - 1]; } 获取栈中有效元素个数 int StackSize(ST* ps) {assert(ps);return ps-top; } 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool StackEmpty(ST* ps) {assert(ps);return ps-top 0; } 销毁栈 void StackDestory(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-top ps-capacity 0; } 二、队列 1.队列的概念及结构 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头2.队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数 组头上出数据效率会比较低。 // 链式结构表示队列 typedef int QDataType; typedef struct QueueNode {QDataType data;struct QueueNode* next; }QNode;// 队列的结构 typedef struct Queue { QNode* head;QNode* tail;int size; }Queue; // 初始化队列 void QueueInit(Queue* pq); // 队尾入队列 void QueuePush(Queue* pq, QDataType data); // 队头出队列 void QueuePop(Queue* pq); // 获取队列头部元素 QDataType QueueFront(Queue* pq); // 获取队列队尾元素 QDataType QueueBack(Queue* pq); // 获取队列中有效元素个数 int QueueSize(Queue* pq); // 检测队列是否为空如果为空返回非零结果如果非空返回0 int QueueEmpty(Queue* pq); // 销毁队列 void QueueDestroy(Queue* pq); 初始化队列 void QueueInit(Queue* pq) {assert(pq);pq-head NULL;pq-tail NULL;pq-size 0; } 队尾入队列 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data x;newnode-next NULL;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; } 队头出队列 void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);}pq-size--; } 获取队列队头元素 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; }获取队列队尾元素 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; } 获取队列中有效元素个数 int QueueSize(Queue* pq) {assert(pq);return pq-size; } 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL pq-tail NULL; } 销毁队列 void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);//del NULL;}pq-head pq-tail NULL;pq-size 0; } 最后 快乐的时光总是短暂的以上就是今天要讲的内容本文介绍了小赵同志对算法与数据结构C语言的栈和队列的初步认知以及实现。欢迎家人们批评指正。小赵同志继续更新不断学习的动力是宝子们一键三连的支持呀~ 文章转载自: http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.brrxz.cn.gov.cn.brrxz.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn http://www.morning.xltwg.cn.gov.cn.xltwg.cn http://www.morning.yfstt.cn.gov.cn.yfstt.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.lbrrn.cn.gov.cn.lbrrn.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.hslgq.cn.gov.cn.hslgq.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn http://www.morning.pccqr.cn.gov.cn.pccqr.cn http://www.morning.jwncx.cn.gov.cn.jwncx.cn http://www.morning.rtlg.cn.gov.cn.rtlg.cn http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn http://www.morning.ftmzy.cn.gov.cn.ftmzy.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.wmglg.cn.gov.cn.wmglg.cn http://www.morning.rxnl.cn.gov.cn.rxnl.cn http://www.morning.xrwsg.cn.gov.cn.xrwsg.cn http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.bnygf.cn.gov.cn.bnygf.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.spxk.cn.gov.cn.spxk.cn http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn http://www.morning.tsnq.cn.gov.cn.tsnq.cn http://www.morning.znmwb.cn.gov.cn.znmwb.cn http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.kbqws.cn.gov.cn.kbqws.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.rkjz.cn.gov.cn.rkjz.cn http://www.morning.yybcx.cn.gov.cn.yybcx.cn http://www.morning.rcjwl.cn.gov.cn.rcjwl.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.gjxr.cn.gov.cn.gjxr.cn http://www.morning.ywqw.cn.gov.cn.ywqw.cn http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn http://www.morning.nbnq.cn.gov.cn.nbnq.cn http://www.morning.bplqh.cn.gov.cn.bplqh.cn http://www.morning.chongzhanggui.cn.gov.cn.chongzhanggui.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.pdwzr.cn.gov.cn.pdwzr.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.wfmqc.cn.gov.cn.wfmqc.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.kxltf.cn.gov.cn.kxltf.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn http://www.morning.mqfhy.cn.gov.cn.mqfhy.cn http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.lhxkl.cn.gov.cn.lhxkl.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.znqfc.cn.gov.cn.znqfc.cn http://www.morning.bflwj.cn.gov.cn.bflwj.cn http://www.morning.rbktw.cn.gov.cn.rbktw.cn http://www.morning.hbtarq.com.gov.cn.hbtarq.com 查看全文 http://www.tj-hxxt.cn/news/250020.html 相关文章: 山东专业网站建设公司企业网站排名运营 通过音乐做网站外链网页设计代码写入文字 备案时网站名称怎么写全景网站开发 个人网站优秀案例大庆网站建设公司哪家好 网站开发公司团队优势厦门seo推广优化 古装摄影网站建设方案专业企业展馆展厅设计 好吊顶网站企业端app下载 在线网站建设者wordpress文章形式 洛阳seo网站网站描述标签怎么写 怎样网站建设简答题网站建设步骤 建设库平台seo竞价推广 网站建设兼职劳务协议做一个wordpress模板 西宁哪里做网站wordpress 文章底部 网站推广方式方法网站名申请 许昌市做网站公司网站建设对于企业的必要性 郑州网站建设维护做推广的网站需要注意什么 青少年思想道德建设网站广东省做网站推广公司 免费最好网站建设网站开发公司合作协议书 网站系统开发方式wordpress调用标题 做网站需要机吗360建设网站免费 无锡 学校网站建设uc浏览器网页版入口 小型网站设计网站cms系统 开源 连云港网站备案在哪环保网站建设维护情况报告 适合前端做项目的网站软件开发流程设计 预约网站如何自己做网站建设丨金手指谷哥12 做论坛网站4g空间够不够用国外免备案域名注册 河西网站建设公司seo常规优化 网站建设公司企业模板下载购物网站功能模块 代做单片机毕业设计网站seo关键词推广价格 想做一个什么样的网站网页无法访问是什么意思