5.队列

队列

定义

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

  • 队列是一种先进先出(First In First Out)的线性表

  • 允许插入的一段称为队尾

  • 允许删除的一段称为队头

 

特点

  • 先进先出

  • 后进后出

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

 

队列的抽象数据类型

5.队列

 

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

普通队列:

  • 使用数组保存队列元素

  • 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; 
}

 

特点--数组未满时都可以插入新的队尾元素