链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=257
思路:
1.用栈作为数据结构,把输入的数据放入栈中,或者直接输入一个字符操作一个字符,也就是把输入的字符串顺序的扫描一遍;
2。输入的字符扫描一遍:
(1)。.如果扫描到的的是操作数(比如0-9),那么直接输出;
(2)。如果是扫描到的字符是“(”,那么直接放入栈中,不进行其它操作;
(3)。如果扫描到的字符是“)”,那么不用管扫描到的“)”,而是对栈进行操作:把栈中“(”之前的运算符全部出栈,并输出来;再把“(“出栈,不输出。
(4)。如果扫描的字符是操作符(-+*/等):
a.如果扫描到的字符的优先级比栈顶元素的优先级高,那么直接入栈,不输出;
b.如果扫描到的字符的优先级与栈顶元素的优先级相等,那么,先输出栈顶元素并出栈;再将刚扫描到的元素入栈但不输出;
c.如果扫描到的字符的优先级比栈顶元素的优先级低,那么一直出栈并且输出,直到栈顶元素的优先级比刚扫描的字符的优先级低(不能相等)为止,最后将刚扫描到字符入栈但不输出