栈和队列也是线性表,其特殊性在于它们的基本操作是线性表操作的子集,它们是操作受限制的线性表。
栈:限定只能在表尾(栈顶top)进行插入或删除操作的线性表。
应用:
- 数制转换
- 括号匹配的检验
- 行编辑程序
- 迷宫求解
- 表达式求值
栈与递归的实现
在高级语言编制的程序中,调用函数和被调用函数之间的链接以及信息交换需要通过栈来进行。
通常,一个函数在运行期间调用另一个函数时,在运行被调用函数之前,系统需要做三件事
- 将所有的实参、返回地址等信息传递给被调用函数保存
- 为被调用函数的局部变量分配存储区
- 将控制转移到被调用函数的入口
而从被调函数返回调用函数之前,系统也要完成三件事
- 保存被调函数的计算结果
- 释放被调函数的数据区
- 依照被调函数保存的返回地址将控制转移到调用函数