数据结构实验之栈与队列二:一般算术表达式转换成后缀式(简要分析+代码)

数据结构实验之栈与队列二:一般算术表达式转换成后缀式
Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。

Input
输入一个算术表达式,以‘#’字符作为结束标志。

Output
输出该表达式转换所得到的后缀式。

Sample
Input
ab+(c-d/e)f#
Output
ab
cde/-f
+

1.关于字母的输出:不管是一般(前缀)式还是后缀式,关于字符的输入输出顺序都是一样的,当遇见字母时我们可以直接输出
2.关于运算字符的输出:先进行运算的字符要先输出,当一个运算符遇见比它优先级小的运算符时,就可以确定输出了。这里,我们用一个专门的数组来存还不能判断输出的运算符,也就是还没有遇见优先级比它还小的运算符。
运算符的优先级规则:
(1)括号优先
(2)%,/,*运算优先级相同,-,+运算优先级相同,且前者优先级更高。
(3)同优先级的运算,先存入先运算
我们始终要保证数组里存的运算符的优先级是依次升高的。
再根据代码来理解一下吧

#include <bits/stdc++.h>
using namespace std;
int f(char a, char b)                        //判断字符a,b的优先级,如果a比b的优先级低,返回 1,否则返回0
{
   
    if (b == '(') return 1;                  //左括号优先级最高,
    if ((a == '/' || a == '*' || a == '%')
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值