05队列

#  队列

**定义**

队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表

- 队列是一种先进先出(First In First Out)的线性表
- 允许插入的一段称为**队尾**
- 允许删除的一段称为**队头**



**特点**

- 先进先出
- 后进后出

注意:队列是操作**受限制**的线性表



**队列的抽象数据类型**

![img](https://img-blog.csdnimg.cn/20200615233119684.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI0ODg3MQ==,size_16,color_FFFFFF,t_70)![点击并拖拽以移动](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)



**队列顺序存储结构——使用顺序表**

**普通队列:**

- 使用数组保存队列元素
- 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;
}




**特点**--数组未满时都可以插入新的队尾元素
posted @ 2022-01-03 21:33  小白学安全  阅读(46)  评论(0)    收藏  举报