链式栈的优势:
1.无栈满问题,空间可扩充
2.插入与删除仅在栈顶处执行
3.链式栈的栈顶在链头
4.适合多栈操作
链式栈类的定义
template <class Type>
class StackNode
{
friend class Stack<Type>;
private:
Type data;
StackNode<Type> *link;
public:
StackNode(Type d, StackNode<Type>
*l = NULL) : data(d), link(l) { }
};
template <class Type>
class Stack
{
private:
StackNode<Type> *top;
public:
Stack ( ) : top ( NULL ) { }
~Stack ( );
void Push ( Type x );
int Pop ( Type & x );
int GetTop (Type &x );
void MakeEmpty();//实现与~Stack()同
int IsEmpty (){return top == NULL; }
}
template <class Type>
Stack<Type>::~Stack ( )
{
StackNode<Type> *p;
while ( top != NULL )
{
p=top;
top=top->link;
delete p;
}
}
template <class Type>
void Stack<Type>::Push ( Type x )
{
top = new StackNode<Type> (x, top);
}
template <class Type>
int Stack<Type>::Pop ( Type &x )
{
if ( IsEmpty ( ) ) return 0;
StackNode<Type> *p = top;
top = top->link; x = p->data;
delete p; return 1;
}
template <class Type>
int Stack<Type>::GetTop ( Type &x )
{
if ( IsEmpty ( ) ) return 0;
x = top->data; return 1;
}