LinkQueue

Posted SteveDevin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinkQueue相关的知识,希望对你有一定的参考价值。

template <class T>
class Node
{
public:
    T data;
    Node *next;
    Node () { }
    Node (T d, Node *p): data(d), next(p) { }
};

template <class T>
class Queue
{
private:
    Node<T> *front, *rear;    
    int size; 
public:
    Queue() : rear(NULL), front(NULL) { size = 0; }
    
    ~Queue() { if(!IsEmpty()) makeEmpty(rear); }
    
    bool EnQueue(const T &x)
    {
        rear = new Node<T> (x, rear);
        size++;
        if(!front) front = rear;
    } 
    
    bool DeQueue(T &x)
    {
        if(IsEmpty()) return false;
        x = front->data;
        
        if(front == rear) delete front;
        else{
            Node<T> *p = front;
            front = rear;
            while(front->next != p) front = front->next;
            delete p;
        }
        
        size--;
        return true;
    }
    
    bool getFront(T &x) const //ok
    {
        if(IsEmpty()) return false;
        x = front->data;
        return true;
    }
    
    void makeEmpty(Node<T> *p)
    {
        if(p != rear) makeEmpty(p->next);
        delete p;
    } 
    
    bool IsEmpty() const { return !size ? true : false; }
    
    int getSize() const 
    {
        return size;
    }
};

Mind:Nothing

以上是关于LinkQueue的主要内容,如果未能解决你的问题,请参考以下文章

LinkQueue链式队列的实现

C++数据结构——链队列(基本代码实现与案例)

链式队列的实现

队列的链式实现

二叉树的实现

栈与队列:链队列算法+可执行代码