码迷,mamicode.com
首页 > 其他好文 > 详细

LinkQueue

时间:2016-10-25 13:40:13      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:null   als   return   deque   nothing   blog   public   next   size   

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

标签:null   als   return   deque   nothing   blog   public   next   size   

原文地址:http://www.cnblogs.com/QQ-1615160629/p/5996016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!