什么是栈
栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称作“栈顶(top)”,不允许插入和删除的另一端称作“栈底(bottom)” 。
栈(Stack)——又称为后进先出的线性表(Last In First Out),简称 LIFO表。
栈的应用
凡应用问题求解的过程具有"后进先出"的天然特性的话,则求解的算法中也必然需要利用"栈"
函数调用/递归调用的处理
如图,在函数调用和递归调用中,每一次调用都像一次进/出栈,满足"后进先出"的天然特性。
Parsing (语法分析——编译程序的设计等)
编译程序(Compiler)将程序剖析成单独的个体,如:关键字、名字、标志…等,以进行程序语法检査。
如上图的括号配对实例。我们都写过判断括号配对的程序,将左括号入栈,遇到右括号便将其出栈,如果处理完一串字符串后栈不为空,则括号配对失败,不符合语法;如为空则配对成功。该过程满足"后进先出"的天然特性。
Reversing Data (反转数据)
当遇到一组需要翻转顺序的数据时,我们可以优先选择使用栈。先将数据进栈a(如上图(a)),再从栈中从栈顶一一出栈(如上图(b))。该过程亦满足"后进先出"的天然特性。
中序式(Infix)与前序式(Prefix)/后序式(Postfix)间互转
Infix 、Prefix和Postfix![Infix 、Prefix和Postfix
由于该板块有些复杂,可单列为一个专题,具体详见我的博客:Infix 、Prefix和Postfix。
后序式的计算
略(如上)
其他
栈是一个相当常用的数据结构类型,本文意在帮助大家了解栈,具体实现以及解题方法详见我的其他文章。
以上文字内容来源广泛,不易进行详细统计,如有侵权请告知,有证必删。
わたしね、愉快な忘れ伞だよ
------多々良 小傘