《第05讲栈》精选课件.pptVIP

  • 5
  • 0
  • 约9.17千字
  • 约 52页
  • 2018-11-07 发布于广西
  • 举报
中缀算术表达式求值 使用两个栈,操作符栈OPTR (operator),操作数栈OPND(operand), 对中缀表达式求值的一般规则: (1) 在OPTR栈中压入一个‘=’ 。 (2) 从输入流获取一字符ch。 (3) 取出OPTR的栈顶OPTR_top 。 (4) 当OPTR_top!=‘=’或ch != ‘=’ 时, 循环执行以下工作, 否则结束算法。此时在OPND栈的栈顶得到运算结果。 while(OPTR_top!=‘=’ ||ch != ‘=’ ){ ①若ch不是操作符,则将字符放回输入流(cin.putback),读操作数newoperand并进OPND栈,并读入下一字符送入ch; ②若ch是操作符,比较icp(ch)的优先级和isp(OPTR_top)的优先级: ? 若isp(OPTR _top)icp(ch),则ch进OPTR栈,从中缀表达式取下一字符送入ch; ? 若isp(OPTR _top)icp(ch),则从OPND栈退出a2和a1,从OPTR栈退出θ, 形成运算指令 (a1)θ(a2),结果进OPND栈; ? 若isp(OPTR _top)==icp(ch)且ch == “)”,则从OPTR栈退出栈顶的“(”,对消括号,然后从中缀表达式取下一字符送入ch 。 } ③取出OPTR的栈顶OPTR_

文档评论(0)

1亿VIP精品文档

相关文档