C++ 鏈隊列基本算法實現

C++ 鏈隊列基本算法實現ios

#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 */
相關文章
相關標籤/搜索