- 217
- 0
- 约8.15千字
- 约 90页
- 2017-03-28 发布于湖北
- 举报
第三章的栈讲解
栈的应用 1.数制转换 2.括号匹配 3.表达式处理 4.老鼠闯迷宫 5.其他 2.括号匹配 1.C等编译系统在求解表达式的值时,第一步需要判断表达式里的左括号与右括号是否匹配。判断表达式中的括号是否匹配的最好办法是使用栈。 三类括号[] () { } 2.遇到左括号,进栈;遇到右括号退栈。在表达式分析过程中,在遇到右括号时,栈已空,则表示不匹配,或者当前的括号与栈顶的括号不一致。当表达式处理完了后,栈里还有内容,表示左括号比右括号多。以上都没有发生,则括号匹配。 括号匹配算法 算法3_12 3.表达式求值 中缀表达式:运算符在两个运算数的中间,(a+b)*c/d,就是中缀表达式。 后缀表达式,运算符在两个运算之后,称后缀表达式,也称逆波兰式表达式。 ab+c*d/ 表达式求值过程: 1.先把中缀表达式转换为后缀表达式。 2.再对后缀表达式求值 这两步都要用到栈。 优先级的概念 在表达式求值过程,计算的顺序用优先级表示。先处理的优先级,后处理的优先级低。 优先级要根据数学运算规则得到的。 优先级的规定 把中缀表达式转换后缀表达式 定义一个运算符栈,保存暂时不能处理的运算符。具体过程如下: 1.左到右逐个扫描整个表达式,若当前的运算符比栈顶的运算符优级高,进栈,否则输出栈。 2. 如果左括号,进栈(或压栈)。 3.如果右括号,则出栈,直到遇到左括号为止。 对后缀表达式求值 对后缀表达
原创力文档

文档评论(0)