二、队列
队列的概念和结构
队列
:只允许在一端进行插入数据操作
,在另一端进行删除数据操作
的特殊线性表,队列具有先进先出
FIFO(First In First Out)的性质。队列:进行插入操作的一端称为队尾
出队列: 进行删除操作的一端称为队头
入队列:进行插入操作的一端称为队尾
出队列:进行删除操作的一端称为队头
队列的实现思路
队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
而链表我们采用双向链接结构,一个指针来维护头节点,一个指针维护尾部节点
定义的结构体类型如下:
队列的内存布局图
队列接口实现
1.初始化和销毁
初始化:初始化只需将两个指针置为NULL。
销毁:同链表一样,保存下一个结点地址,释放当前结点,直到指针为NULL。
2.入队
入队和单链表的尾插一样,只是这里更简单,这里不需要找尾。
注意:
- 队列为空。
- 队列不为空。
3.出`队
和单链表头删一样,保存第二个结点地址释放,队头位置。
注意:队列不能为空。
4.取队头数据
返回队头元素即可。
5.取队尾数据
返回队尾元素即可。
6.获取队列元素个数
7.判断队列是否为空
直接判断头指针是否为空,就可判断队列是否为空。