用C++实现栈

#include <iostream>
using namespace std;
class Stack
{
public: struct Link
         {
       Link(struct Link* next,int data):next_(next),data_(data)
    { 
   
    }
       Link*next_;
       int data_;
          };
Stack(struct Link*head,int size ): head_(head),size_(size)
    {
          
    }
    ~Stack()
    {
     while(head_!=0)
     {
      struct Link *tmp_;
      tmp_=head_;
      head_=head_->next_;
      delete(tmp_);
     }
      
    }

    bool empty()
    {
       return (size_==0);
    }

    void Push( int data )
    {
     Link *node=new Link(head_,data);
           //node->next_=head_;
     head_=node;
     size_++;
    }

  bool   Pop(  int &data)
    {
     if (!empty())
     {
      Link * tep;
      tep=head_;
               head_=head_->next_;
      data=tep->data_;
      //return data;
      delete(tep);
      size_--;
           }
     return false;
    }
    

private:
 Link *head_;
 int size_;
};

int main()
{
Stack stack(0,0);
int i;
for (i=0;i<5;i++)
{
 stack.Push(i);
}
while (!stack.empty())
{
 stack.Pop(i);
 cout<<"i="<<i<<endl;
}

return 0;
}

实现的结果同博客中用c实现栈。值得注意的是在C++中,NULL等价于0,在C中0是(void*)0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值