栈的应用

什么是栈

栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称作“栈顶(top)”,不允许插入和删除的另一端称作“栈底(bottom)” 。
栈
栈(Stack)——又称为后进先出的线性表(Last In First Out),简称 LIFO表。
LIFO表

栈的应用

栈的应用
凡应用问题求解的过程具有"后进先出"的天然特性的话,则求解的算法中也必然需要利用"栈"

函数调用/递归调用的处理

函数调用/递归调用的处理
如图,在函数调用和递归调用中,每一次调用都像一次进/出栈,满足"后进先出"的天然特性。

Parsing (语法分析——编译程序的设计等)

编译程序(Compiler)将程序剖析成单独的个体,如:关键字、名字、标志…等,以进行程序语法检査。
括号配对
如上图的括号配对实例。我们都写过判断括号配对的程序,将左括号入栈,遇到右括号便将其出栈,如果处理完一串字符串后栈不为空,则括号配对失败,不符合语法;如为空则配对成功。该过程满足"后进先出"的天然特性。

Reversing Data (反转数据)

反转数据
当遇到一组需要翻转顺序的数据时,我们可以优先选择使用栈。先将数据进栈a(如上图(a)),再从栈中从栈顶一一出栈(如上图(b))。该过程亦满足"后进先出"的天然特性。

中序式(Infix)与前序式(Prefix)/后序式(Postfix)间互转

Infix 、Prefix和Postfix![Infix 、Prefix和Postfix
由于该板块有些复杂,可单列为一个专题,具体详见我的博客:Infix 、Prefix和Postfix

后序式的计算

略(如上)

其他

栈是一个相当常用的数据结构类型,本文意在帮助大家了解栈,具体实现以及解题方法详见我的其他文章。

以上文字内容来源广泛,不易进行详细统计,如有侵权请告知,有证必删。

わたしね、愉快な忘れ伞だよ
            ------多々良 小傘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值