《算法4》——补全左括号的问题

本文介绍了使用双栈法解决《算法》课后题中补全左括号问题的思路。通过操作符栈和操作数栈,遍历表达式,遇到右括号时,从栈中弹出元素构造完整表达式,再存入操作数栈。
摘要由CSDN通过智能技术生成

题目

在完成《算法》课后题目的过程中,遇到一道题目内容如下:

编写一道程序,从标准输入得到一个缺少左括号的表达式并打印出补全括号之后的中序表达式。例如,给定输入:
1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) )
你的程序应该输出:
((1 + 2) * ((3 - 4) * (5 - 6)))

思路

开始感觉这个题目就有点类似求四则表达式的题目,也就是所谓的双栈法
双栈法的原理如下:

1. 构造两个Stack,分别用来存储操作符(optrStack)和操作数(dataStack).
2. 遍历表达式,如果是操作数,则入操作数栈;如果是运算符,则比较当前运算符和optrStack栈顶运算符的优先级:当优先级大于栈顶运算符时,则操作符入栈。当优先级小于栈顶运算符时,则运算符出栈,同时dataStack出栈两个操作数,计算结果后再将操作数入栈。
3. 重复2,直到optrStack为空为止。

这个题

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值