队列:
队列(Queue)是仅在表尾进行插入,表头进行删除的线性表
表尾即$a_n$端,称为队尾(rear);表头即$a_1$端,称为队头(front)
它是一种先进先出的线性表
例:队列 $Q=(a_1,a_2,a_3,...,a_n)$
$a_1为队头$ $a_n为队尾$
插入元素称为入队;删除元素称为出队
队列的存储结构为链队或顺序队(常用循环顺序队)
队列的表示—用一堆数组base[MAXQSIZE]
#define MAXQSIZE 100 //最大队列长度
typedef struct SQueue{
QElemType *base; //初始化的动态存储分配空间
int front; //头指针(存储位置序号)
int base; //尾指针
}SQueue;
顺序队的基本操作
初始:front = rear = 0;
入队:base[rear] = x;
rear++;
出队:x = base[front];
front++;
思考:若队尾指针rear大于MAXQSIZE时有什么问题?
rear == MAXQSIZE时,队列发生溢出