⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.h

📁 第一次上传
💻 H
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -