链栈--(大话数据结构97页)

//链栈的实现  --大话数据结构99页

#include <iostream>
using namespace std;

//链节点定义
typedef struct stacknode
{
    int data;
    struct stacknode * next;
}StackNode, *LinkStackptr;

//定义链栈,头指针 和 长度
struct LinkStack{
    LinkStackptr  top;
    int count;
};

//初始化
void InitStack(LinkStack *L){
L->top=NULL;
L->count=0;
}

//入栈
int Push(LinkStack *L,int e){
    LinkStackptr s=new StackNode;//新元素申请内存
    s->data= e;          //将待插入的数据放入 申请的节点的data
    s->next=L->top;  //top 中的数据放进新节点的next
    L->top=s;            //将s 的赋给top
    L->count++;        //数据个数加一
    return 0;              //正常终止
}

int Pop(LinkStack  *L)
{
    LinkStackptr p;
    if(L->top==NULL )  //判断是否为空,为空说明为空栈
        return -1;
    int e;
       e=L->top->data;   //top 指的栈顶的 数据
       p=L->top;            //top赋给p
       L->top=L->top->next;   //  大话数据结构99页
       free(p);                //释放P
       L->count--;         //数据减一
       return e;             //返回出栈数据
}
// 销毁栈
void
DestroyStack(LinkStack *L) { LinkStackptr q; while(L->count) { q=L->top->next; delete L->top; L->top=q; L->count--; } cout<<"销毁成功"<<endl; }
 
  

 

void main(){
    LinkStack a;
InitStack(&a); Push(
&a,3); Push(&a,4); Push(&a,5); cout<<Pop(&a)<<endl; cout<<Pop(&a)<<endl; cout<<Pop(&a)<<endl; }

转载于:https://www.cnblogs.com/Flyzhcong/p/3951593.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值