文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>(转)(c#)数据结构与算法分析 --栈与队列

(转)(c#)数据结构与算法分析 --栈与队列

时间:2010-11-04  来源:higirle

后缀式

A+B+C-D A B+C+D- A*B/C+D A B*C/D+ A*(B+C*D)+E A B C D * + * E + (A+B)*C/(D+E-F) A B + C * D E + F - / A+B*C+(D*E+F)*G A B C * + D E * F + G * +
    结合上边的示例,会发现后缀式并没有描述优先级的括号,这是因为括号并不是运算符。大家在自己动手做两个,就掌握这种方法了。
    
    程序中如何实现这种转换呢?那就要依靠强大的栈了。

中追到后缀的转换 
   
  • 当读到一个操作数时,立即把它放到输出中,即显示出来。操作符不立即输出,从而必须先存在某个地方,例如栈或变量。当遇到一个左括号时也把它放入栈中。计算是从一个初始化为空的栈开始。
  • 如果栈为空,则将符号入栈。
  • 如果遇见一个右括号,那么就将栈元素弹出并输出,直到遇到一个(相对应的)左括号,但是这个左括号只弹出,并不输出。
  • 如果遇见优先级与栈首元素相同或比较低的符号,则将栈的所有元素弹出并输出,直到遇见一个左括号为止,这个左括号只弹出,并不输出,最后,将遇到的那个符号入栈。
  • 如果遇见优先级与栈首元素高的符号(右括号除外),则把它入栈。
  • 如果遇见右括号,则弹出并输出所有元素,直到遇到一个与之相对应的左括号,这个左括号只弹出不输出。
  • 如果读到末尾了,则将栈中元素弹出并输出,直到栈为空,左括号只弹出不显示
  • 相关阅读 更多 +
    排行榜 更多 +
    西安交大通

    西安交大通

    生活实用 下载
    长江云通

    长江云通

    生活实用 下载
    translatez

    translatez

    生活实用 下载