《大话数据结构》笔记(4-2)--栈与队列:队列

循环队列(顺序存储结构)的代码实现:

队列(链式存储结构)的代码实现:
 
第四章  栈与队列
队列
队列是一种先进先出(First In First Out)的线性表,简称FIFO. 允许插入的一端称为队尾,允许删除的一端称为队头。
 
队列的抽象数据类型
 
 
循环队列
把队列头尾相接的顺序存储结构称为循环队列。
队头、队尾两个指针front指针(第一个元素的位置)和rear指针(下一个要插进来的元素的位置)
 
当front==rear时,该队列为空;
当(rear+1)%size==front时,该队列为满。
 
计算队列的长度公式为:
(rear - front + size) % size
 
循环队列的顺序存储结构
 
初始化
 
队列长度
 
入队:O(1)
 
出队:O(1)
 
 
队列的链式存储结构及实现
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。
 
将队头指针指向链队列的头结点,队尾指针指向终端结点。
 
空队列时,front和rear都指向头结点。
 
 
链队列的结构
 
入队:O(1)
 
出队:O(1)
 
总的来说,在可以确定队列长度最大值的情况下,建议用循环队列;如果无法预估队列的长度,则用链队列。
 
 
栈与队列总结
栈和队列都是特殊的线性表,对插入和删除做了限制:
1. 栈是限定仅在表尾进行插入和删除操作的线性表
2. 队列是只允许在一段进行插入操作,而在另一端进行删除操作的线性表。
posted @ 2017-05-04 14:47  lyu0709  阅读(198)  评论(0编辑  收藏  举报