逆波兰表达式的求解问题

本文介绍了逆波兰表达式(后缀式)的概念,以及其在计算机计算中的优势。通过举例说明了正常表达式与逆波兰表达式的区别,并阐述了如何使用栈来实现逆波兰表达式的求解。虽然代码中存在一些未完成的部分,作者期待得到专业人士的指导和帮助。
摘要由CSDN通过智能技术生成

因为要考研究生,第一次学习数据结构,算法中的一些关于栈的基本操作是从严蔚敏编著的《数据结构》(C语言版)学来,代码有一些不够完整或者欠缺的地方,希望有大神可以帮忙指出,感激不尽。
下面具体谈一谈逆波兰表达式。
逆波兰表达式也就是后缀式,它的主要特征是“S1 S2 OP”S1是第一操作数,S2是第二操作数,OP则是运算符了。
举个例子:正常的表达式是5*2,也就是”S1 OP S2”,这是符合我们学习的数学的,然而计算机对于这样的式子不是太方便计算,所以逆波兰表达式应运而生。
所以对于上面的例子逆波兰表达式就是52*。特点是操作数的顺序不变,运算符到最后那么计算机在运行的时候则是从左到右扫描表达式,一旦遇到了运算符,那么紧挨着它前面的操作数应该是第二操作数(S2),再往前面一个是第一操作数(S1),然后即可开始运算。运算结果又作为新的操作数。所以这里我用了一个栈来存储操作数,下面就是我的具体的算法思想了,有一些函数没有完全写出来,有些是不太清楚怎么写,具体都在代码里了。
关于栈的一些函数比如”pop”’,”push”等为了算法简略这里我就不具体说明了,具体大家可以参考上文提到的书里的47页。
还有一个函数”in(c,op)”判断c是否在运算符集合的这个函数,我也是一时没写出具体的代码,不过这也不妨碍阐述整个逆波兰思想吧,嘿嘿。
这里我处理的表达式已经是转换好的后缀表达式,不包含从原表达式转换成后缀式的代码,这块还不太清楚,欢迎高手指导。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值