# The Fourth Dimension Space

## ACM模板之—循环队列（模板类）

//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;
}

posted on 2009-07-14 16:32 abilitytao 阅读(375) 评论(0)  编辑 收藏 引用