中缀表达式转后缀表达式【转换步骤】

中缀表达式转后缀表达式思路步骤分析

一、初始化两个栈: 运算符栈symbolStack 和 存储中间结果的栈 resultStack;
二、从左到右扫描中缀表达式;
三、遇到操作数时,将其压入到 resultStack中;
四、遇到运算符时,比较期与symbolStack栈顶运算符的优先级;

1). 如果symbolStack为,或栈顶运算符为左括号"(",则直接将此运算符压入symbolStack栈中;
2). 否则,若优先级比栈顶运算符高,也将运算符压入symbolStack栈中;
3). 否则,(运算符的优先级没有symbolStack栈顶运算符的优先级高)将symbolStack栈顶的运算符弹出并压入到resultStack栈中,再次进入第四步骤与symbolStack栈顶的运算符进行比较;
五、遇到括号时:

1). 如果是左括号"(",则直接压入到resultStack中;
2). 如果是右括号")", 则一次弹出symbolStack栈顶的运算符,并压入到resultStack中,直到遇见左括号为止,此时将这一对括号丢弃(相当于是将左括号弹出并丢弃,然后右括号也一并丢弃不需要入栈了);
六、重复步骤二到五直到表达式的最右边;
七、将symbolStack中剩余的运算符一次弹出并压入resultStack栈中;
八、依次弹出resultStack中的元素并输出,结果的逆序就是中缀表达式对应的后缀表达式;

由于resultStack栈在整个使用过程中并没有使用出栈的操作,可以直接使用数组或者是list来完成数据的存储直接顺序输出就是一个后缀表达式了

借鉴记录使用 视频地址 b站数据结构和算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值