// 顺序栈.cpp
// Array-based stack implementation
template <class Elem>
class AStack: public Stack<Elem>
{
private:
int size; // Maximum size of stack
int top; // Index for top element
Elem *listArray; // Array holding stack elements
public:
AStack (int sz = DafaultListSize) // Constructor
{ size = sz; top = 0; listArray = new Elem[sz]; }
~AStack() {delete [] listArray;} // Destructor
void clear() { top = 0; }
bool push (const Elem& item)
{
if (top == 0)
return false; // stack is full
else
{
listArray[top++] = item;
return true;
}
}
bool pop(Elem& it) // pop top element
{
if (top == 0) return false;
else
{
it = listArray[--top];
return true;
}
}
bool topValue(Elem& it) const // return top element
{
if (top == 0) return false;
else
{
it = listArray[top - 1];
return true;
}
}
int length()const {return top;}
};