#include <assert.h>
template< class T >
class ArrayStack
{
public:
ArrayStack():size(0), tos(-1), contain( NULL ){ }
ArrayStack( int MaxSize );
void Push( T& element );
T& Pop();
bool IsEmpty();
bool IsFull();
void ClearEmpty();
private:
int size;
int tos; //栈顶索引,当其为-1时表示空栈
T* contain;
};
template< class T >
ArrayStack< T >::ArrayStack( int MaxSize )
{
size = MaxSize;
tos = -1;
contain = new T[ size ];
}
template< class T >
void ArrayStack< T >::Push( T& element )
{
assert( tos != size-1 );
contain[ ++tos ] = element;
}
template< class T >
T& ArrayStack< T >::Pop()
{
assert( tos != -1);
return contain[ tos-- ];
}
template< class T >
void ArrayStack< T >::ClearEmpty()
{
tos = -1;
}
template< class T >
bool ArrayStack< T >::IsEmpty()
{
if( tos == -1)
return true;
else
return false;
}
template< class T >
bool ArrayStack< T >::IsFull()
{
if( tos == size-1 )
return true;
else
return false;
}
|