|
一、顺序队列
顺序队列是较为普遍的一种队列实现方式,采用环状顺序表来存放队列元素,并用两个变量分别指向队列的前端和尾端,往队列中加进或取出元素时分别改变这两个变量的计数。
顺序队列的类定义如下:
class Queue
{
private:
float *Qlist; //存放数据元素的向量 //
队列前端和尾端向量的下标值 int front,rear; //
当新元素进入或队列尾端的元素取出,这两 //
个变量值随之增减
int maxsize; //队列最大长度
int curr_len; //队列当前长度
public: //
创建队列实例,指定该实例的向量空间长度
Queue(int size);
…
};
压入队列顶算法如下:
void Queue::EnQueue(float item)
{ //
判队列满,否则队列溢出异常,退出运行
assert(!curr_len== maxsize);
curr_len ++;
Qlist[rear] = item; //在队列尾端加入队列
rear = (rear + 1) % maxsize; //
}
从队列前端取出算法如下:
float Queue::DeQueue()
{ float temp; //
判队列非空,否则队列已空,异常退出运行
assert(!curr_len== 0); temp = Qlist[front];
curr_len--; front = (front+1) % maxsize; return temp;
}
下图是对一个大小为7的顺序队列的一系列操作示意图,显示了队列的存储向量和rear,front的变化。

|