顺序队列知识点
上一个知识点   下一个知识点


本节概述 本节知识点 本节总结

一、顺序队列

顺序队列是较为普遍的一种队列实现方式,采用环状顺序表来存放队列元素,并用两个变量分别指向队列的前端和尾端,往队列中加进或取出元素时分别改变这两个变量的计数。
    顺序队列的类定义如下:
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的变化。