ACM模板之—循环队列(模板类)

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

虽然这个模板已经通过简单测试,不过我还是有几问题不太明白,希望大家能帮我解释一下:
这个队列中的数组写成动态形式是一个不错的想法,但是调试的时候比较麻烦,因为debug时在test.element下面看不到任何数组元素。不知道该怎么解决?

你可能感兴趣的:(ACM模板之—循环队列(模板类))