堆栈(Stack)是一种线性数据结构,它有点像很多人都玩过的玩具叠环圈。堆栈最基本的操作只有两个:入栈(Push)和出栈(Pop)。堆栈的实现原理是在顺序表或链表的基础上,限定插入和删除操作只能在一端进行。
堆栈可以用来实现程序运行时的函数调用栈、表达式求值、数制转换、括号匹配和迷宫等。
为了方便理解,以下用函数调用栈作为例子:在程序运行过程中,每当调用一个函数,就将该函数的返回地址、参数等信息入栈,函数执行结束后再将这些信息出栈,返回到该函数被调用的位置,顺序执行下一条指令。
堆栈在计算机底层硬件中也得到了广泛应用,比如CPU中的栈寄存器和操作系统中的进程栈。