queue.h

来自「邻接矩阵的最短距离」· C头文件 代码 · 共 79 行

H
79
字号
#include <assert.h>#define null 0#include <iostream.h>template <class Type> class Queue;template <class Type> class QueueNode{  friend class Queue<Type>;  friend ostream& operator <<(ostream& strm, Queue<Type>& a);  private:    Type data;    QueueNode<Type> * link;    QueueNode(Type d=0,QueueNode *l=null):data(d),link(l){}  };template <class Type> class Queue{  public:    Queue():rear(null),front(null){}    ~Queue();    void EnQueue(const Type & item);    Type DeQueue();    Type GetFront();    void MakeEmpty(){front=rear=null;}    int  IsEmpty() const {return front==null;}    friend ostream& operator <<(ostream& strm, Queue<Type>& a);  private:    QueueNode<Type> *front,*rear;  };  template <class Type> Queue<Type>::~Queue(){    QueueNode<Type> * p=front;    while(front!=null){      p=front;      front=front->link;      delete p;      }    };  template <class Type> void Queue<Type>::EnQueue(const Type & item){    if(front==null) front=rear=new QueueNode<Type>(item,null);      else rear=rear->link=new QueueNode<Type>(item,null);    }  template <class Type> Type Queue<Type>::DeQueue(){    assert(!IsEmpty());    QueueNode<Type> * p=front;    Type retvalue=p->data;    front=front->link;    delete p;    return retvalue;    }  template <class Type> Type Queue<Type>::GetFront(){    assert(!IsEmpty());    return front->data;    }template <class Type>ostream& operator <<(ostream& strm, Queue<Type>& a){  QueueNode<Type>* p=a.front;  if (a.front!=NULL)  {    while (p!=a.rear)    {      strm<<p->data<<" ";      p=p->link;    }    strm<<p->data;  }  strm<<endl;   return strm;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?