3-5 队列的表示和操作实现(1)

队列:

队列(Queue)是仅在表尾进行插入,表头进行删除的线性表

  1. 表尾即$a_n$端,称为队尾(rear);表头即$a_1$端,称为队头(front)

  2. 它是一种先进先出的线性表

    例:队列 $Q=(a_1,a_2,a_3,...,a_n)$

    $a_1为队头$ $a_n为队尾$

  3. 插入元素称为入队;删除元素称为出队

  4. 队列的存储结构为链队或顺序队(常用循环顺序队)

队列的表示—用一堆数组base[MAXQSIZE]

#define MAXQSIZE 100 //最大队列长度
typedef struct SQueue{
	QElemType *base; //初始化的动态存储分配空间
	int front; //头指针(存储位置序号)
	int base; //尾指针
}SQueue;

3-5 队列操作(2)

顺序队的基本操作

  1. 初始:front = rear = 0;

  2. 入队:base[rear] = x;

            rear++;
    
  3. 出队:x = base[front];

            front++;
    

思考:若队尾指针rear大于MAXQSIZE时有什么问题?

rear == MAXQSIZE时,队列发生溢出

  1. 若rear==MAXQSIZE,且front=0时,再入队为真溢出(队中已无空间)