当前位置: 首页 > news >正文 杭州滨江区抖音seo行情windows优化大师有哪些功能 news 2025/10/25 23:12:45 杭州滨江区抖音seo行情,windows优化大师有哪些功能,服务器网站打开慢,百度快照不更新怎么办本章介绍数据结构队列的内容#xff0c;我们会从队列的定义以及使用和OJ题来了解队列#xff0c;话不多说#xff0c;我们来实现吧 队列 1。队列的概念及结构 队列#xff1a;只允许在一端进行插入数据操作#xff0c;在另一端进行删除数据操作的特殊线性表#xff0c;… 本章介绍数据结构队列的内容我们会从队列的定义以及使用和OJ题来了解队列话不多说我们来实现吧 队列 1。队列的概念及结构 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头。 我们来看一下下面的这张图让我们更好的理解它 我们从队尾入队头出只能是这样入栈和出栈 2。队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数 组头上出数据效率会比较低。 那队列的实现我们是用链式结构来实现的因为用数组下标的话出栈的时候要往前挪动数据会更麻烦这样队列的意义就下降了所以我们这里用的方法是链式结构。 typedef int QueueDataType; typedef struct QueueNode {QueueDataType* next;QueueDataType data; }QueueNode;typedef struct Queue {QueueDataType* head;QueueDataType* tail; }Queue; 这里我们定义的结构体Queue有很大的作用因为队列不是像单链表那样队列是有它的特点的其中最大的一个特点就是入栈只能从尾入出栈就是头出所以我们在这里定义head和tail有很大的作用定义在结构体当中会方便不少那我们现在继续往下看我们的接口函数吧。 给大家看一下下面实现队列的接口函数然后我们一步一步的来实现他们 // 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QueueDataType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QueueDataType QueueFront(Queue* q); // 获取队列队尾元素 QueueDataType QueueBack(Queue* q); // 获取队列中有效元素个数 int QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q);队列的初始化 void QueueInit(Queue* q); 初始化我们初始的是结构体Queue中的内容 void QueueInit(Queue* q) {assert(q);q-head q-tail NULL; }首先要判断传过来的指针是否是为空然后将头指针和尾指针都置为NULL。 销毁队列 void QueuePush(Queue* q, QueueDataType data) 首先我们要创造一个节点将它放入创造节点的结构体就是QueueNode然后我们要更新后面节点中的head和tail这里大家肯定有疑问我们竟然是更新指针那我们应该传指针的地址才能起到作用一级指针只能改变结构体的内容那我们在这里传的话难道不会产生问题吗答案是不会我们的结构体中放的就是指针那我们只需要改变结构体的内容就是head和tail就行竟然是这样的话我们传一个一级指针就可以起到我们的作用所以传的是一级那现在我们在插入函数中先创造一个节点因为只能从队列的尾插入而且有了这个指针我们就不需要像单链表那样再去找尾我们每次插入都会更新尾。 void QueuePush(Queue* q, QueueDataType data) {assert(q);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));if (newnode NULL){printf(malloc fail\n);exit(-1);}newnode-data data;newnode-next NULL;if (q-head NULL){q-head q-tail newnode;}else{q-tail-next newnode;q-tail newnode;} }有了入栈就有出栈出栈的话是从我们的队列最开始的地方出队我们来实现一下吧 void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));QueueNode* headnext q-head-next;free(q-head);q-head headnext;} /这里的空是因为如果我们的队列都是空的话我们哪里还有数据进行删除呢 所以要先检查一下是不是为空那接着我们把这个函数也实现一下吧 bool QueueEmpty(Queue* q) {assert(q);return q-head NULL; }这个很好理解如果为空就代表一个数也没有那我们就不能再对队列进行操作了那再来看我们下面的接口函数吧。 // 获取队列头部元素 QueueDataType QueueFront(Queue* q) {assert(q);return q-head-data; }有头就有尾希望我们的人生也是 那我再来实现一下取尾的接口吧 QueueDataType QueueBack(Queue* q) {assert(q);return q-tail-data; }我们继续往下走实现一下我们后面的接口函数这些基本上都很简单我就也不再解释了看代码就能理解的 int QueueSize(Queue* q) {assert(q);int count 0;QueueNode* cur q-head;while (cur){count;cur cur-next;}return count; }销毁队列 void QueueDestroy(Queue* q) {while (!QueueEmpty(q)){QueueNode* headnext q-head-next;free(q-head);q-head headnext;}}统计我们队列节点的数量我们遍历一遍就可以实现了定义一个cur指针进行遍历那其他的我们也都讲完了后面分享栈和队列的OJ题给大家看完之后对队列有了更深的理解 完整代码 #includeQueue.h// 初始化队列 void QueueInit(Queue* q) {assert(q);q-head q-tail NULL; } // 队尾入队列 void QueuePush(Queue* q, QueueDataType data) {assert(q);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));if (newnode NULL){printf(malloc fail\n);exit(-1);}newnode-data data;newnode-next NULL;if (q-head NULL){q-head q-tail newnode;}else{q-tail-next newnode;q-tail newnode;} } // 队头出队列 void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));QueueNode* headnext q-head-next;free(q-head);q-head headnext;} // 获取队列头部元素 QueueDataType QueueFront(Queue* q) {return q-head-data; } // 获取队列队尾元素 QueueDataType QueueBack(Queue* q) {return q-tail-data; } // 获取队列中有效元素个数 int QueueSize(Queue* q) {assert(q);int count 0;QueueNode* cur q-head;while (cur){count;cur cur-next;}return count; } // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q) {assert(q);return q-head NULL; } // 销毁队列 void QueueDestroy(Queue* q) {while (!QueueEmpty(q)){QueueNode* headnext q-head-next;free(q-head);q-head headnext;}}#includestdio.h #includeassert.h #includestdlib.h #includestdbool.htypedef int QueueDataType; typedef struct QueueNode {QueueDataType* next;QueueDataType data; }QueueNode;typedef struct Queue {QueueDataType* head;QueueDataType* tail; }Queue;// 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QueueDataType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QueueDataType QueueFront(Queue* q); // 获取队列队尾元素 QueueDataType QueueBack(Queue* q); // 获取队列中有效元素个数 int QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q);今天的分享就到这里了我们下次再见 文章转载自: http://www.morning.rgfx.cn.gov.cn.rgfx.cn http://www.morning.gjfym.cn.gov.cn.gjfym.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.bhpsz.cn.gov.cn.bhpsz.cn http://www.morning.rnkq.cn.gov.cn.rnkq.cn http://www.morning.fjglf.cn.gov.cn.fjglf.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.rqhdt.cn.gov.cn.rqhdt.cn http://www.morning.mnkhk.cn.gov.cn.mnkhk.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn http://www.morning.lxngn.cn.gov.cn.lxngn.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.rfhmb.cn.gov.cn.rfhmb.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.fktlg.cn.gov.cn.fktlg.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn http://www.morning.pqktp.cn.gov.cn.pqktp.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.wdlyt.cn.gov.cn.wdlyt.cn http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.tddrh.cn.gov.cn.tddrh.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.yjfzk.cn.gov.cn.yjfzk.cn http://www.morning.jydhl.cn.gov.cn.jydhl.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.zxhpx.cn.gov.cn.zxhpx.cn http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.xkyfq.cn.gov.cn.xkyfq.cn http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn http://www.morning.ysqb.cn.gov.cn.ysqb.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.bpmth.cn.gov.cn.bpmth.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.gfprf.cn.gov.cn.gfprf.cn http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn http://www.morning.lmjtp.cn.gov.cn.lmjtp.cn http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn http://www.morning.sbncr.cn.gov.cn.sbncr.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.srjgz.cn.gov.cn.srjgz.cn http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn http://www.morning.mlyq.cn.gov.cn.mlyq.cn http://www.morning.zpyxl.cn.gov.cn.zpyxl.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.npcxk.cn.gov.cn.npcxk.cn 查看全文 http://www.tj-hxxt.cn/news/249425.html 相关文章: 合肥工程建设交易中心网站想用vs做网站 学什么 简单的网站设计开发网站建设基本流程包括哪几个步骤 新网站建设的感想四川网站建设找哪家 wordpress 网站运行时间咸阳做网站开发公司哪家好 涉县企业做网站推广四川住房和建设厅网站 网站的备案号百度知道个人中心 如何用文档做网站用易语言做抢购网站软件 帝国做的网站石岩网站建设 0755 选择电商网站建设wordpress模板站如何安装 做网站的开场白常州企业自助建站系统 整站排名服务推广策略研究 南昌知名的网站建设公司100大看免费行情的软件 太仓网站制作书生wordpress在哪修改代码 建水县住房和城乡建设局网站遵义会议在线 工程建设指挥部网站网站建设落地页 什邡建设局网站门户网站开发报价 嵊州门户网站深圳制作网站建设推广 基于目的地的o2o旅游电子商务网站开发设计毕业设计网站文章更新怎么做 良精网站管理系统装修网站效果图 深圳安鸿源建设网站网站开发公司 郑州 关于建设网站安全性合同网站建好后如何上线 dedecms新网站 上传到万网的空间三亚哪里做网站 做网站的你选题的缘由是什么全球设计师 公司网站 仿站什么意思中文搭建式软件开发工具 网站建设需要用到什么建设网站我们重中之重-用户体验 四川省城乡住房与建设厅网站首页郑州企业的网站建设 做家教什么网站制作网站单页 河南两学一做网站中小企业微网站建设 工程模板多少钱一张郑州网站优化怎样做 做网站可以赚钱吗知乎爱山东app二维码