ACM模板之—循環(huán)隊列(模板類)
//BEGIN_TEMPLATE_BY_ABILITYTAO_ACM
#include<cassert>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
template<class T>
class Queue

{
private:
int front,rear;
T *element;
int maxsize;
public:
Queue(int n=10000);
~Queue()
{delete []element;}
void push_back(T item);
T pop_front();
T get_front();
void clear()
{front=rear=0;}
bool isempty()
{return front==rear;}
bool isfull()
{return (rear+1)%maxsize==front;}
int lenth()
{return (rear-front+maxsize)%maxsize;}
};

template<class T>
Queue<T>::Queue(int n=10000)

{
front=0;
rear=0;
maxsize=n;
element=new T[maxsize];
}
template<class T>
void Queue<T>::push_back( T item)

{
assert(!isfull());
rear=(rear+1)%maxsize;
element[rear]=item;
}
template<class T>
T Queue<T>::pop_front()

{
assert(!isempty());
front=(front+1)%maxsize;
return element[front];
}
template<class T>
T Queue<T>::get_front()

{
assert(!isempty());
return element[(front+1)%maxsize];
}
//END_TEMPLATE_BY_ABILITYTAO_ACM






/**//////////////////////////////////////////////////////////////////////////////////////////////
int main()

{
Queue<int> test(10);
int n;
int i;
for( i=1;i<=9;i++)
test.push_back(i);
n=test.get_front();
n=test.lenth();
test.clear();
n=test.lenth();
return 0;
}雖然這個模板已經(jīng)通過簡單測試,不過我還是有幾問題不太明白,希望大家能幫我解釋一下:
這個隊列中的數(shù)組寫成動態(tài)形式是一個不錯的想法,但是調(diào)試的時候比較麻煩,因為debug時在test.element下面看不到任何數(shù)組元素。不知道該怎么解決?
posted on 2009-04-02 20:57 abilitytao 閱讀(1895) 評論(8) 編輯 收藏 引用

