栈的基本操作

顺序栈

s.base s.top  指针

判断栈满: s.top-s.base==stacksize;

判断栈空:s.top==s.base

清空栈:if(s.base) s.top=s.base,stacklen=0;

销毁栈: if(s.base){ free(s.base) ; stacksize=0; s.top=s.base=null;}

入栈:

if(s.top-s.base==stacksize) return ERROR;栈满,报错

*s.top=e; s.top++;

return OK;

出栈

if(s.top==s.base) return ERROR;

--s.top;       e=*s.top;

return OK;

链栈

(指针的方向由栈顶指向栈底)

链表的头指针是栈顶;不需要头结点;空栈相当于头指针指向空;插入删除仅在栈顶执行

初始化: s=null;

判断链栈是否为空: if(s==null) return ok;

获取栈顶元素:   if(s!=null){ return s->data; }

链栈的入栈:

p=malloc(sizeof(stacknode));

p->data=e;      p->next=s;    s=p;

return ok; 

链栈的出栈

if(s==null) return null;

s=s->data;      p=s;    s=s->next;     free(p);

return ok; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nuo__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值