设为首页 加入收藏

TOP

C语言 队列(循环队列)(二)
2019-08-13 05:39:25 】 浏览:90
Tags:语言 队列 循环
组越界,也不宜继续扩大数组空间,造成了空间上的浪费


循环队列的核心在于队头指针和队尾指针的增加方式


q.head = (q.head + 1) % LENGTH;


q.tail = (q.tail + 1) % LENGTH;


这样实现了臆想上存储空间的弯曲效果,也解决了空间上的浪费(建议在纸上模拟循环队列数组的出队入队操作,以理解上面两行代码)


值得注意的是


q.head指向的是队首元素


q.tail指向的是队尾元素的后一位,浪费了一位空间,例如数组q.data[11]插入10个元素后q.tail指向的是q.data[10]即q.tail = 10;


4、循环队列的新问题


当队列为空时q.head = q.tail,当队列为满时也有q.head = q.tail造成了判断队列是空还是满的二义性


解决方法: 1.增加一个参数,使删除元素为1,插入元素为0


                     2.增加一个参数,记录队列的元素个数即长度


          3.空出一个单元,令if(q.head == (q.tail + 1) % LENGTH)为队列为满的条件,以此解决二义性


5、注意


循环队列的头指针和尾指针的减少或增加方式


队列为满或空的判定条件


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇链表(单向链表的建立、删除、插.. 下一篇C语言文件操作(FILE)与常用文件操..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目