c++实现数据结构八 链式队列

来源:互联网 发布:linux 定时重启程序 编辑:程序博客网 时间:2024/05/17 22:23

QueueNode.h

template<typename Type> class LinkQueue;template<typename Type> class QueueNode{private:friend class LinkQueue<Type>;QueueNode(Type item, QueueNode<Type> *next = NULL): data(item), pnext(next){}private:Type data;QueueNode<Type> *pnext;};


 

LinkQueue.h

#include "QueueNode.h"template<typename Type> class LinkQueue{public:LinkQueue():pfront(NULL),prear(NULL) {}~LinkQueue(){MakeEmpty();}public:void Append(const Type item);Type Delete();Type GetFront();void MakeEmpty();void Print();bool IsEmpty() const{return pfront == NULL;}private:QueueNode<Type> *prear, *pfront;};template<typename Type>void LinkQueue<Type>::Append(const Type item){QueueNode<Type> *p= new QueueNode<Type>(item);//空的队列if(pfront == NULL){pfront = prear = p;}else{prear = prear->pnext = p;}}template<typename Type>Type LinkQueue<Type>::Delete(){if( IsEmpty() ){cout<<"the queue is empty"<<endl;exit(1);}QueueNode<Type> *pdel = pfront;pfront= pfront->pnext;Type item = pdel->data;delete pdel;return item;}template<typename Type>Type LinkQueue<Type>::GetFront(){if( IsEmpty() ){cout<<"the queue is empty"<<endl;exit(1);}return pfront->data;}template<typename Type>void LinkQueue<Type>::MakeEmpty(){QueueNode<Type> *pdel;while(pfront){pdel = pfront;pfront = pfront->pnext;delete pdel;pdel=NULL;}}template<typename Type>void LinkQueue<Type>::Print(){cout<<"front";QueueNode<Type> *pmov =pfront;while(pmov){cout<<"-->"<<pmov->data;pmov = pmov->pnext;}cout<<"-->rear"<<endl;}


 

原创粉丝点击