C++ 链队列基本算法实现
C++ 链队列基本算法实现
#ifndef LinkQueue_h #define LinkQueue_h #includetemplate <class T> struct Node{ T data; struct Node * next; }; template <class T> class LinkQueue{ public: LinkQueue(){ front = rear = new Node ; front -> next = NULL; } ~LinkQueue(); void EnQueue(T x); T DeQueue(); int GetLength(); T GetFront(); bool Empty(){return front == rear? true : false;} private: Node * front; Node * rear; }; template <class T> void LinkQueue ::EnQueue(T x){ rear->next = new Node ; rear = rear->next; rear->data = x; rear->next = NULL; } template<class T> T LinkQueue ::DeQueue(){ Node *p = front ->next; if(!p)throw "Underflow"; front->next = p->next; T x = p->data; delete p; if(!(front->next)) rear = front; return x; } template <class T> T LinkQueue ::GetFront(){ if(!front->next) throw "overflow"; return front->next->data; } template <class T> LinkQueue :: ~LinkQueue(){ //包括源节点的释放 while(front){ rear = front->next; delete front; front = rear; } } template<class T> int LinkQueue ::GetLength(){ Node *p = front->next; int j = 0; while(p){ j++; p = p->next; } return j; } #endif /* LinkQueue_h */