第二章 栈(2)——链式存储结构

本文介绍了链式存储结构实现栈的基本原理,包括存储方式的选择及其原因。详细讲述了栈的初始化、入栈、出栈及判空操作的具体实现过程。

1、存储方式:

同一般线性表的单链式存储结构完全相同。但是应该确定链表的哪端对应于栈顶,如果链表尾作为栈顶,则入,出栈操作的时间复杂性为O(n)。

如果链表头作为栈顶,则入、出栈操作的时间复杂性为O(1)。所以,一般把链表的表头作为栈顶。

2、实现

1)栈初始化

S=(LStack*)malloc(sizeof(LStack));

S.next=NULL;

2)入栈

p=(LStack*)malloc(sizeof(Lstack));

p->data=e;

p->next=S->next;

S-next=p;

3)出栈//删除栈顶元素,并用e返回其值

if(S->next==NULL)

return EVERFLOW

else p=S->next;e=p->data;

s-next=p->next;

free(p);

4)判断栈是否空

if(S->next=NULL)

return TRUE;

posted on 2014-04-13 16:41 ii沙漠 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/shamoof/p/3662404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值