链式栈的实现

链式栈的优势:

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;

}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值