队列
定义
队列(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;
}
特点--数组未满时都可以插入新的队尾元素