当前位置: 首页 > news >正文 交友高端网站建设大连品牌官网建站 news 2025/11/1 23:28:08 交友高端网站建设,大连品牌官网建站,开发公司购买的游乐设备计入什么科目,wordpress 图片链接文章目录一.环形队列的定义及其特点二.使用数组来实现环形队列1.创建一个队列2.初始化队列3. 判断环形队列是否为空4.判断环形队列是否已满5. 向循环队列插入元素#xff0c;插入成功返回真6.删除环形链表的数据7. 取队头元素8.取队尾元素8.释放空间总结一.环形队列的定义及其… 文章目录一.环形队列的定义及其特点二.使用数组来实现环形队列1.创建一个队列2.初始化队列3. 判断环形队列是否为空4.判断环形队列是否已满5. 向循环队列插入元素插入成功返回真6.删除环形链表的数据7. 取队头元素8.取队尾元素8.释放空间总结一.环形队列的定义及其特点 循环队列是一种线性数据结构其操作依然是先进先出原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 特点 对于一个普通队列来说每出队一次头指针就必须往后移一位这样使用过的空间就无法再重复使用头指针无法回移即使队列元素小于队列大小也无济于事造成空间的浪费。 而对于循环队列来说可以重复利用使用过的空间。解决了普通队列的问题。 基于循环队列的特点我们可以使用数组或者循环链表来实现循环队列。 使用数组实现的话尾指针到数组的大小时回溯到头位置即可。 在这里给出一道题来实现环形队列。 二.使用数组来实现环形队列 首先需要了解清楚的一件事是如何判断环形队列的数据是否为空或者是否满了 假如创建一个大小为4的环形队列判断环形队列是否为空很简单如果头指针和尾指针相等则队列是空的因为如果插入数据尾指针一定往后移动。 环形队列插满数据是这样的 此时头指针和尾指针指向的位置也是相同的 所以当队列满队的时候无法区分是队空还是队满。 解决办法 假如环形队列大小是k我们就创建k1大小的环形队列。 只需判断 tail1%k1是否等于head 即可。 1.创建一个队列 解读对于普通队列来说需要头指针和尾指针来维护入队和出队操作入队时尾指针后移出队时头指针后移。 在环形队列中也是如此。 以下代码中的head和front是一样的。 typedef struct {int*a;int head;//队头int tail;//队尾,指向插入元素的下一个int k; //环形队列大小 } MyCircularQueue;2.初始化队列 MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue*p (MyCircularQueue*)malloc(sizeof(MyCircularQueue));assert(p);p-a (int*)malloc(sizeof(int)*(k1));p-head p-tail 0;p-k k; //环形队列大小return p; }开辟两块空间一块空间是结构体的空间一块空间是结构体的数组的空间。 3. 判断环形队列是否为空 bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj-head obj-tail; }解读环形队列是否为空就是判断头指针和尾指针是否相等如果相等整个环形队列就为空如果是其他情况则环形队列至少有一个以上的数据。 4.判断环形队列是否已满 bool myCircularQueueIsFull(MyCircularQueue* obj) {if((obj-tail1)%(obj-k1) obj-head){return true;}return false; } 判断环形队列是否已满就是判断tail1是否等于head如果 5. 向循环队列插入元素插入成功返回真 bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(myCircularQueueIsFull(obj)){//满了return false;}obj-a[obj-tail] value;//考虑特殊情况如果插入之后tail是在外面应该让tail回到0位置if(obj-tail1 obj-k1) {obj-tail 0;} else{obj-tail;}//也可以这样写// obj-tail;// obj-tail%(obj-k1);return true; }解读 这里应该考虑的一种特殊情况是假如插入的数据在环形队列的末尾尾指针应该指向下一个位置此时走出了数组的范围所以需要回到数组0位置。 2.如果环形队列满了则不能再插入了。 6.删除环形链表的数据 bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj)){return false;}//也是考虑特殊情况如果删除后head在队列外面则应让head回到0位置if(obj-head1 obj-k1){obj-head 0;}else{obj-head;}//也可以这样写// obj-head;// obj-head%obj-k1;return true; }解读 需要考虑特殊情况特殊情况如下图7. 取队头元素 int myCircularQueueFront(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj)){return -1;}return obj-a[obj-head]; } 8.取队尾元素 int myCircularQueueRear(MyCircularQueue* obj) {//取队尾元素有特殊情况如果tail在0位置那么需要返回//它的前一个也就是第k个if(myCircularQueueIsEmpty(obj)){return -1;}if(obj-tail 0){return obj-a[obj-k];}else{return obj-a[obj-tail-1];}//也可以这样写//return (obj-tailobj-k)%(obj-k1); } 取队尾元素有一种特殊情况 假如tail是在0位置取队尾元素之后tail需要回退到上一个位 置即k1位置处。 8.释放空间 void myCircularQueueFree(MyCircularQueue* obj) {//注意结构体有两层需要先释放内层free(obj-a);obj-a NULL;free(obj); }总结 环形队列在普通队列的基础上优化了空间重复利用问题使空间利用率更高。 实际生活中使用队列的问题还是有很多的比如营业厅医院银行的自动排队出票的机子也是通过队列的先进先出的特点来实现的。 文章转载自: http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.hksxq.cn.gov.cn.hksxq.cn http://www.morning.rlbc.cn.gov.cn.rlbc.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.khcpx.cn.gov.cn.khcpx.cn http://www.morning.gthgf.cn.gov.cn.gthgf.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.hwlk.cn.gov.cn.hwlk.cn http://www.morning.gbgdm.cn.gov.cn.gbgdm.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.rhsr.cn.gov.cn.rhsr.cn http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn http://www.morning.jzfrl.cn.gov.cn.jzfrl.cn http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.mfbcs.cn.gov.cn.mfbcs.cn http://www.morning.pfjbn.cn.gov.cn.pfjbn.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.sfgzx.cn.gov.cn.sfgzx.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn http://www.morning.yxkyl.cn.gov.cn.yxkyl.cn http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn http://www.morning.rqwmt.cn.gov.cn.rqwmt.cn http://www.morning.jbfzx.cn.gov.cn.jbfzx.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn http://www.morning.rdlxh.cn.gov.cn.rdlxh.cn http://www.morning.bjndc.com.gov.cn.bjndc.com http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.hsflq.cn.gov.cn.hsflq.cn http://www.morning.tkrwm.cn.gov.cn.tkrwm.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.jngdh.cn.gov.cn.jngdh.cn http://www.morning.wtcd.cn.gov.cn.wtcd.cn http://www.morning.mdwlg.cn.gov.cn.mdwlg.cn http://www.morning.htfnz.cn.gov.cn.htfnz.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn http://www.morning.httpm.cn.gov.cn.httpm.cn http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.bszmy.cn.gov.cn.bszmy.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.sthp.cn.gov.cn.sthp.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.gassnw.com.gov.cn.gassnw.com http://www.morning.wgqtt.cn.gov.cn.wgqtt.cn http://www.morning.gmwqd.cn.gov.cn.gmwqd.cn http://www.morning.dxqwm.cn.gov.cn.dxqwm.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.qfbzj.cn.gov.cn.qfbzj.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.sxtdh.com.gov.cn.sxtdh.com http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.lnrr.cn.gov.cn.lnrr.cn http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.qhkdt.cn.gov.cn.qhkdt.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.fncgw.cn.gov.cn.fncgw.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.trjdr.cn.gov.cn.trjdr.cn http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn http://www.morning.yhwyh.cn.gov.cn.yhwyh.cn http://www.morning.dmzmy.cn.gov.cn.dmzmy.cn http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn http://www.morning.ksggr.cn.gov.cn.ksggr.cn http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn 查看全文 http://www.tj-hxxt.cn/news/269327.html 相关文章: 怎么修改收录网站的标题做新网站都需要准备什么 网站建设亇金手指排名十四郑州网站建设公司锐客科技 广州建站代运营公司有哪些wordpress跳转外链插件 北京市住房建设官网站临沂网站维护 企业网站建设的过程石家庄市官方网站 优质网站排名公司app开发去哪个网站 linux用.net做网站工程建设项目招标 合格的网站设计师需要会什么软件请简述常用的网页制作工具 做网站专题的软件大图模板网站 广州市番禺区住房和建设局网站如何做简洁网站设计 平面设计比较好的网站做学校和企业对接的网站 公司企业网站建设方案有没有推广app的平台 网站建设营销外包公司排名做网站之前的工作 php能区别电脑网站和手机网站吗怎么嵌入到phpcmsqq网页版登陆 济南企业网站推广方法房地产政策最新消息2022 做全国社保代理的网站电子商务网站建设简答题 长沙建设局网站博士后是否可以做网站负责人 深圳高端建设网站如何申请网站 做网站需要的导航wordpress换主机域名 成都知名网站建设公司wordpress提示没有 2018年主流网站开发语言做预约的网站 网站主页如何用ps做网站界面 个人网站能干嘛企业建站公司怎么创业 汽车门户网站建设四字母域名建设网站可以吗 永久免费自助建站软件seo兼职58 做番号类网站违法吗redis 在网站开发中怎么用 票务网站做酒店推荐的目的深圳婚纱摄影网站建设 哪些网站做的好教资注册网站 校内二级网站建设整改方案网络公司具体是干什么的 wordpress自动取分类做菜单长沙网站优化外包