数据结构,栈,表达式求值,求高手指点!

[复制链接]
查看11 | 回复3 | 2012-4-1 22:46:19 | 显示全部楼层 |阅读模式
表达式的求值 问题:能否设计算法,编制一个程序,让计算机扫描如下表达式,并将其值打印出来。# 3 * ( 4 + 8 ) / 2 -5 #注:给表达式设置#,标志扫描的开始和结束。提示算法:设两个栈,一个是操作数栈,用来存放操作数,如3、4、8等,另一个是运算符栈,用来存放运算符。首先将标志“#”进运算符栈的栈底。然后依次扫描,按照栈的后进先出原则进行:(1)遇到操作数,进操作数栈;(2)遇到运算符时,则需将此运算符的优先级与栈顶运算符的优先级比较,若若高于栈顶元素则进栈,继续扫描下一符号,否则,将运算符栈的栈顶元素退栈,形成一个操作码Q,同时操作数栈的栈顶元素两次退栈,形...
回复

使用道具 举报

千问 | 2012-4-1 22:46:19 | 显示全部楼层
先定义两个栈一个用于存放数字一个用于存放操作符,比如:+,-,*,/,( 等然后栈的操作函数一定要有,比如:初始化、判断栈是否为空、入栈、出栈、取栈顶元素,都必须要有下面函数就是其他操作了:// 将字符串转化成数字。第一个参数是输入的表达式,第二个参数数字所在字符串的位置,返回改数字float StrToFloat(cha...
回复

使用道具 举报

千问 | 2012-4-1 22:46:19 | 显示全部楼层
表达式求值就是输入一个表达式然后算出结果,比如:23+89*559-48*7/5 因为要考虑运算符的优先级,所以可以用栈来实现。先说到这里,不懂再追问。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行