堆栈是抽象数据结构,是一组相同数据类型的组合,所有的操作均在堆栈顶端进行,具有“后进先出”(LIFO)的特性。堆栈结构在计算机中的应用相当广泛,时常被用来解决计算机的问题,例如递归调用,子程序的调用等。
特性:
只能从堆栈的顶端存取数据。
数据的存取符合“后进先出”的原则。
基本运算:
create:创建一个空堆栈。
push:把数据存压入堆栈顶端,并返回新堆栈。
pop:从堆栈顶端弹出数据,并返回新堆栈。
IsEmpty:判断堆栈是否为空堆栈,是则返回true,不是返回false。
full:判断堆栈是否已满,是则返回true,不是则返回false。
堆栈的应用:
堆栈在计算机领域的应用相当广泛,主要特性是限制了数据插入与删除的位置和方法,属于有序表的应用,堆栈的各种应用列举如下:
1.二叉树和森林的遍历,例如中序遍历,前序遍历等。
2.计算机中央处理单元的中断处理。
3.图形的深度优先查找法(DFS)。
4.堆栈计算机:采用空地址指令,其指令没有操作数,大部分操作都通过弹出和压入两个指令来处理程序的计算机。
5.当从递归返回时,则按序从堆栈顶端取出这些相关值,回到原来执行递归前的状态,再往下继续执行。
6。算数表达式的转换和求值,例如中序法转换成后序法。
7.调用子程序和返回处理,例如在执行调用的子程序之前,必须先将返回的地址(即下一个指令的地址)压入堆栈中,然后才开始执行调用子程序的操作,等到子程序执行完毕后,再从堆栈中弹出返回地址。
8.编译错误处理:例如当编辑程序发生错误或警告信息时,会将所在的地址压入堆栈中之后,才会显示出错误相关的信息对照表。