C++ 鏈佇列基本演算法實現
阿新 • • 發佈:2018-11-24
C++ 鏈佇列基本演算法實現
#ifndef LinkQueue_h #define LinkQueue_h #include <iostream> template <class T> struct Node{ T data; struct Node <T> * next; }; template <class T> class LinkQueue{ public: LinkQueue(){ front = rear = new Node <T>; front -> next = NULL; }~LinkQueue(); void EnQueue(T x); T DeQueue(); int GetLength(); T GetFront(); bool Empty(){return front == rear? true : false;} private: Node<T> * front; Node<T> * rear; }; template <class T> void LinkQueue<T>::EnQueue(T x){ rear->next = new Node<T>; rear= rear->next; rear->data = x; rear->next = NULL; } template<class T> T LinkQueue<T>::DeQueue(){ Node<T> *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<T>::GetFront(){ if(!front->next) throw "overflow"; return front->next->data; } template <class T> LinkQueue<T> :: ~LinkQueue(){ //包括源節點的釋放 while(front){ rear = front->next; delete front; front = rear; } } template<class T> int LinkQueue<T>::GetLength(){ Node<T> *p = front->next; int j = 0; while(p){ j++; p = p->next; } return j; } #endif /* LinkQueue_h */