线性表之Queue

最后发布时间:2020-12-07 22:04:28 浏览量:

父类Queue ADT

template <class T> 
class Queue  { 
public: 			        		// 队列的运算集
        void clear();					// 变为空队列
        bool enQueue(const T item); 		// item入队,插入队尾,成功则返回真否则返回假
        bool deQueue(T item);     	// 返回队头元素并从队列中删除,成功则返回真
        bool front(T* item);	       	// 返回队头元素,但不删除,成功则返回真
        bool isEmpty(); 				// 返回真,若队列已空
        bool isFull();       			// 返回真,若队列已满
        void print();
};

顺序队列的ADT

template <class T>
class arrQueue : class Queue<T>
{
private:
    int mSize;   // 存放队列的数组的大小
    int front;   // 表示队头所在位置的下标
    int rear;    // 表示队尾所在位置的下标
    T *qu;      // 存放类型为T的队列元素的数组
public :
    arrQueue(int size);
    ~arrQueue();
    void clear();
    bool enQueue(T item);
    bool deQueue(T &item);
    bool front(T &item);
};

链式队列

链式队列节点ADT

template <class T>
class Link
{
public:
    T data;     // 用于保存结点元素的内容
    Link *next; // 指向后继结点的指针
    Link(const T info, Link *nextValue = NULL);
    Link(Link *nextValue = NULL);
};

链式队列ADT

template <class T>
class lnkQueue : public Queue<T>
{
private:
    int size;       // 队列中当前元素的个数
    Link<T> *front; // 表示队头的指针
    Link<T> *rear;  // 表示队尾的指针
public:             // 队列的运算集
    lnkQueue(int size);
    ~lnkQueue();
    void clear();
    bool enQueue(const T item);
    bool deQueue(T *item);
    bool getFront(T *item);
    void print();
};