==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍
**基本思想:**利用数组,来模拟队列,先进先出。入队要从队尾进去,也就是rear(rear所指向的是最后一个元素的后面)。出队要从队头出去,也就是数组的第一个元素(不一定是a[0],而是front所指向的位置)。
**优点:**顺序队列的优点就一个,那就是代码太简单,其它的没有。
**缺点:**用数组来模拟队列,那缺点就比较严重,第一,不适合动态增长。第二,空间利用率太低(因为出队的时候队头不断的向后移,队尾也向后移,那么前面的空间将会被浪费掉)。
所以一般都不会用顺序队列,只是拿来学习其思想用。
C代码实现下载
C++代码实现下载
java代码实现下载
(备用下载地址 )
实现功能:
1.void InitQueue(int queueSize); 初始化队列,并且指定队列大小
1).根据指定的元素大小,分配数据存储空间
2).初始化front和rear的指向(一开始都指向0,然后当它们再次相等的时候,相减之后队列变为空了)
如图:
2.bool IsEmpty(); 队列是否为空
1).根据rear - front 是否等于0,即可判断
3.bool IsFull(); 队列是否满
1).根据rear 是否等于queueSize,即可判断
如图:
4.void EnQueue(T e); 入队
1).先判断队列是否满了
2).直接把元素放进a[rear]处
3),最后rear向后移动
如图:
5.void DeQueue(); 出队
1).先判断队列是否为空
2).直接把front往后移一位(不用担心遍历的时候会把出队的元素输出,因为遍历的起点和终点分别是front和rear,只输出它们之间的元素)
如图:
6.int GetSize(); 获取队列长度
1).rear - front即可
如图:
7.T GetQueueHead(); 获取队头
1).直接返回a[front]即可。(要先判断队列是否为空)
8.void Print(); 遍历队列
for (int i = front;i < rear;i++)
printf("%d\n", data[i]);
9.void ClearQueue(); 清空队列
1).把front 和 rear都置为0即可。