page116.cpp

来自「包含常见的数据结构的类和函数」· C++ 代码 · 共 71 行

CPP
71
字号
#include <assert.h>#define null 0#include <iostream.h>template <class Type> class Queue;template <class Type> class QueueNode{  friend class Queue<Type>;  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;}  private:    QueueNode<Type> *front,*rear;  };  template <class Type> void 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;    }void main(){  Queue<int> que;  for(int i=0;i<10;i++)que.EnQueue(i);  cout<<que.GetFront()<<endl;  while(!que.IsEmpty())cout<<que.DeQueue()<<endl;  for(i=0;i<10;i++)que.EnQueue(i);  que.MakeEmpty();  if(que.IsEmpty())cout<<"the que is empty.."<<endl;  }

⌨️ 快捷键说明

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