栈的顺序和链式实现

一、栈的含义

栈是一种特殊的线性表,仅允许在表的一端进行插入和删除运算。这一端被称为栈顶(top),相对地,把另一端称为栈底(bottom)。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。所以栈具有“后入先出”的特点(LIFO)。


二、顺序栈

InitStack(&S):初始化栈。构造一个空栈 S,分配内存空间。

DestroyStack(&S):销毁栈。销毁并释放栈 S 所占用的内存空间。

Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶。

Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x返回。

GetTop(S, &x):读栈顶元素。若栈 S 非空,则用 x 返回栈顶元素

其他常用操作:
StackEmpty(S):判断一个栈 S 是否为空。若S为空,则返回true,否则返回false。
 

2.初始化

 

3.入栈

 

4.出栈

 

三、链式栈

链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。即用链式存储方式的方法来实现栈

InitLinkStack(&S):初始化栈。构造一个空栈 S,分配内存空间。

DestroyLinkStack(&S):销毁栈。销毁并释放栈 S 所占用的内存空间。

Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶。

Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x返回。

GetTop(S, &x):读栈顶元素。若栈 S 非空,则用 x 返回栈顶元素

其他常用操作:

LinkStackEmpty(S):判断一个栈 S 是否为空。若S为空,则返回true,否则返回false
1.入栈

2.出栈

 

3.空栈

 

4.栈顶

 

5.销毁栈

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值