数据结构之栈(简单版)

1.1 栈的定义

栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示:

结论:后进先出(Last In First Out),简称为LIFO(Last In First Out)线性表,因此栈的操作是线性表操作的特例。

栈的基本运算有六种:

构造空栈:InitStack(S)

判栈空: StackEmpty(S)、返回布尔值true或者false

判栈满: StackFull(S)、返回布尔值true或者false

进栈: Push(S,x)、可形象地理解为压入,这时栈中会多一个元素x

退栈: Pop(S) 可形象地理解为弹出,弹出后栈中就无此元素了,注意弹出的一定是栈的最外面元素,故不需要指定。

取栈顶元素:StackTop(S),与弹出不同,只是使用栈顶元素的值,该元素仍在栈顶不会弹出。

1.2 栈的顺序存储和链式存储

由于栈也是线性表,因此线性表的存储结构对栈也适用,通常栈有顺序栈链栈两种存储结构.

顺序栈中有"上溢"和"下溢"的概念。顺序栈好比一个盒子,我们在里头放了一叠书,当我们要用书的话只能从第一本开始拿(你会把盒子翻过来吗?真聪明^^),那么当我们把书本放到这个栈中超过盒子的顶部时就放不下了(叠上去的不算,哼哼),这时就是"上溢","上溢"也就是栈顶指针指出栈的外面,显然是出错了。反之,当栈中已没有书时,我们再去拿,看看没书,把盒子拎起来看看盒底,还是没有,这就是"下溢"。"下溢"本身可以表示栈为空栈。

链栈则没有上溢的限制,它就象是一条一头固定的链子,可以在活动的一头自由地增加链环(结点)而不会溢出。

1.3 栈的应用

1)  数制转换

2)语法词法分析

3)表达式求值等


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值