数据结构(C语言版)栈和队列课稿.ppt

(1) 若栈顶运算符的优先级低于刚读入的运算符,则让刚读入的运算符进operator栈;  (2) 若栈顶运算符的优先级高于刚读入的运算符,则将栈顶运算符退栈,送入θ,同时将操作数栈operand退栈两次,得到两个操作数a、b,对a、b进行θ运算后,将运算结果作为中间结果推入operand栈; (3) 若栈顶运算符的优先级与刚读入的运算符的优先级相同,说明左右括号相遇,只需将栈顶运算符(左括号)退栈即可。 3.3 栈与递归的实现 栈非常重要的一个应用是在程序设计语言中用来实现递归。递归是指在定义自身的同时又出现了对自身的调用。如果一个函数在其定义体内直接调用自己,则称其为直接递归函数;如果一个函数经过一系列的中间调用语句,通过其它函数间接调用自己,则称其为间接递归函数。 1. 递归特性问题 1) 递归函数 例如,很多数学函数是递归定义的,如二阶Fibonacci数列: 递归过程的实现 一个函数调用另一个函数时,在运行被调用函数之前,系统做的工作有:  (1) 保留本层参数与返回地址(将所有的实在参数、返回地址等信息传递给被调用函数保存);  (2) 给下层参数赋值(为被调用函数的局部变量分配存储区); (3) 将程序转移到被调函数的入口。 

文档评论(0)

1亿VIP精品文档

相关文档