- 10
- 0
- 约1.32万字
- 约 57页
- 2017-06-18 发布于湖北
- 举报
* (2)根据上述三条运算规则,在运算的每一步中,对任意相继出现的算符?1和?2 ,都要比较优先权关系。 算符优先法所依据的算符间的优先关系见教材P53表3.1 (是提供给计算机用的表!) 由表可看出,右括号 ) 和井号 # 作为?2时级别最低; 由c 规则得出: * ,/, + ,-为?1时的优先权低于‘(’,高于‘)’ 由a规则得出:‘(’=‘)’ 表明括号内运算,已算完。 ‘ # ’=‘ # ’ 表明表达式求值完毕。 栈的应用(表达式求值) * (3)算法思想: 设定两栈:操作符栈 OPTR ,操作数栈 OPND 栈初始化:设操作数栈 OPND 为空;操作符栈 OPTR 的栈底元素为表达式起始符 ‘#’; 依次读入字符:是操作数则入OPND栈,是操作符则要判断: if 栈顶元素操作符 ,则退栈、计算,结果压入OPND栈; 操作符 = 栈顶元素且不为‘#’,脱括号(弹出左括号); 栈顶元素操作符 ,压入OPTR栈。 栈的应用(表达式求值) * 栈的应用(表达式求值) OPTR OPND INPUT OPERATE 3*(7-2)# Push(opnd,’3’) # *(7-2)# 3 # Push(optr,’*’) #,* 3
原创力文档

文档评论(0)