1. 程式人生 > >C++ 鏈佇列基本演算法實現

C++ 鏈佇列基本演算法實現

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 */