线性结构的两种常见应用之二
定义
一种可以实现“先进先出”的存储结构
分类
链式队列 --用链表实现
静态队列 --用数组实现
静态队列通常都必须是循环队列
循环队列:
1.静态队列为什么必须是循环队列
2.循环队列需要几个参数来确定
需要两个参数确定
front
rear
3.循环队列各个参数的含义
2个参数不同场合有不同含义
建议初学者先记住,然后慢体会
1)队列初始化
front和rear的值都是零
2)队列非空
front代表的是队列的第一个元素
rear代表的是队列的最后一个有效元素的下一个元素
3)队列空
front和rear的值相等,但不一定是零
4.循环队列入队伪算法
1)将值存入r所代表的位置
2)错误的写法:r=r+1
正确吃的写法:r=(r+1)%数组的长度
5.循环队列出栈伪算法
front = (front+1) % 数组的长度
6.如何判断循环队列是否为空
如果front与rear的值相等
则该队列就一定为空
7.如何判断循环队列是否已满
预备知识:
front的值可能比rear大,也可能比rear小,当然也可能两者相等。
两种方式:
1)多增加一个标枳识参数
2)少用一个元素【通常使用第二种方式】
如果front和rear的值紧挨着,则队列已满
用c语言伪算法表示:
if((r+1)%数组长度 == f)
已满
else
不满
算法:
入队
出队
队列的具体应用:
一些和时间有关的操作有队列的影子