【发布时间】:2017-10-07 08:56:39
【问题描述】:
我们都知道在 C++ 中,括号只是 '(' 而不是 '[' ,我们可以通过编写 cout<<(2+3);it 来检查它会给我输出 5 但如果我写 cout<<[2+3]; 或 cout<<{2+3}; 它肯定会报错,所以现在我们知道 '(' 是一个运算符,而 '[' 不是。
我的问题分为两部分。
我的问题的第 1 部分是,如果我想转换类似的表达式
“a+b+[(b+c)+(d+e)(f+e)](g+h)/(a+b)” 使用堆栈到后缀中,我是否也将 '[' 推入堆栈,或者我将它存储在字符串中,就像其他操作数存储在字符串中一样。
我的问题的第 2 部分是,在使用堆栈将表达式转换为后缀后,我得到了答案 "ab+[bc++de+fe+]*gh+*ab+/+ ",是否正确?在此过程中,我没有将“[”推入堆栈,因为我将其视为操作数。
【问题讨论】:
-
so now we come to know that '(' is an operator and '[' is not:你什么意思?每个操作员都是专门为其操作而设计的 -
我想你没有明白我的意思,我只是想问一下使用堆栈的中缀到后缀转换的算法说,当你遇到括号时,你将它压入堆栈,而不是'[' ?
标签: stack infix-notation postfix