线性表之顺序队列

==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍


**基本思想:**利用数组,来模拟队列,先进先出。入队要从队尾进去,也就是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即可。

线性表之链栈
线性表之顺序栈
线性表之双向链表
线性表之循环链表
线性表之单链表
线性表之顺序表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值