栈(stack),它是一种运算受限的线性表,先进后出。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。有进栈、出栈、栈满、栈空等几种状态。
栈可以用来在函数调用和递归时会被用到。类似于有左右括号的这类操作也可以用栈。深度优先用到栈。
尾递归、常数递归可以不用栈。
栈相当于具有记忆功能。
栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。主要记录:
1函数的返回地址和参数
2临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。