码迷,mamicode.com
首页 > 其他好文 > 详细

栈的应用

时间:2015-05-13 18:37:59      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

1、利用栈,将中缀表达式(即标准形式的表达式)转换为后缀式

例:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+

 

数据结构:一个操作符栈

方法:

(1)读入字符

(2)如果字符为操作数,直接输出

(3)如果字符为左圆括号,压入栈中

(4)如果字符为非括号操作符,则比较当前操作符与栈顶操作符的优先级:

  a. 当前操作符优先级<=栈顶操作符,弹出栈顶操作符直至当前操作符优先级>栈顶操作符,当前操作符压入栈中

  b. 当前操作符优先级>栈顶操作符,压入栈中

  PS:()优先级最高

(5)如果字符为右圆括号,弹出并输出栈中操作符直至左圆括号,左圆括号也弹出,左右圆括号不输出

(6)如果读到表达式的末尾,弹出栈中所有元素并输出

 

2、利用栈,实现计算器

例:1-2*3+(4*5+6)*7

 

数据结构:一个操作符栈,一个操作数栈

方法:

(1)读入字符

(2)如果字符为数字,压入操作数栈

(3)如果字符为左括号,压入操作符栈

(4)如果字符为非括号操作符,则比较当前操作符与栈顶操作符的优先级:

  a. 当前操作符优先级<=栈顶操作符,从操作符栈中弹出一个操作符,从操作数栈中弹出一个/两个操作数,计算结果压入操作数栈,重复此步直至当前操作符优先级>栈顶操作符,当前操作符压入栈中

  b. 当前操作符优先级>栈顶操作符,压入栈中

(5)如果字符为右括号,弹出并处理操作符直至左括号,左括号弹出

(6)如果读到表达式的末尾,弹出所有操作符并处理

栈的应用

标签:

原文地址:http://www.cnblogs.com/guo-xiang/p/4499653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!