5.队列
队列
定义
队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
-
队列是一种先进先出(First In First Out)的线性表
-
允许插入的一段称为队尾
-
允许删除的一段称为队头
特点
-
先进先出
-
后进后出
注意:队列是操作受限制的线性表
队列的抽象数据类型
队列顺序存储结构——使用顺序表
普通队列:
-
使用数组保存队列元素
-
front:队头指针
-
rear:队尾指针
使用顺序表实现队列的缺点:
-
队列已满,无法继续在队尾插入新元素
-
数组仍有空闲空间,造成空间浪费-假溢出
队列的顺序存储结构——循环队列
循环队列——队列头尾相接的顺序存储结构
typedef struct{ int data [MAX_SIZE]; int front; //头指针 int rear;//尾指针,如果队列不为空,指向队列尾元素的下一个位置 }SeqQueue;
//初始化一个空队列Q Status initQueue(SeqQueue *q){ q->front = 0; q->rear = 0; return OK; }
特点--数组未满时都可以插入新的队尾元素