逆波兰表达式转换
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
+(C*D)+E (C*D)+E C*D)+E
*D)+E D)+E )+E +E E 空 空
输入 (A-B)*(((C-D*E)/F)/G)*H
A-B)*(((C-D*E)/F)/G)*H -B)*(((C-D*E)/F)/G)*H B)*(((C-D*E)/F)/G)*H
)*(((C-D*E)/F)/G)*H
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该
操作符“/” 若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 运算符优先级相同,弹出栈顶运算符,并把当前运算符压入堆栈
理由 操作数 操作数
操作数 操作数 操作数 理由 操作数 操作数
理由 操作数
*(((C-D*E)/F)/G)*H (((C-D*E)/F)/G)*H ((C-D*E)/F)/G)*H
(C-D*E)/F)/G)*H C-D*E)/F)/G)*H -D*E)/F)/G)*H
D*E)/F)/G)*H *E)/F)/G)*H E)/F)/G)*H
理由
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 开括号。 当前运算符“+”低于栈顶运算符“*” 理由
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 运算符优先级相同
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该
输出
空 空 A
A AB
ABABAB-
AB-C AB-C
AB-CD AB-CD+ AB-CD+* AB-CD+*E AB-CD+*E
输出 空 空 A A AB AB* AB* AB* AB*C AB*C AB*CD AB*CD* AB*CD*+ AB*CD*+E AB*CD*+E+
输出 空 空 A A AB
输入
(A-B)*(C+D)+E A-B)*(C+D)+E -B)*(C+D)+E
B)*(C+D)+E )*(C+D)+E
*(C+D)+E (C+D)+E C+D)+E
+D)+E D)+E
)+E +E E 空 空
输入 (A*B)+(C*D)+E A*B)+(C*D)+E
*B)+(C*D)+E B)+(C*D)+E )+(C*D)+E
操作数D 操作数E 操作数F 操作数G
堆栈内容(右边为栈顶)
空 ( (
((-
空 * *(
*( *(+
*(+ * + + 空
堆栈内容(右边为栈顶)
空 ( ( (* (* 空 + +( +( +(* +(* + + + 空
堆栈内容(右边为栈顶)
空 ( ( ((-
空 * *( *(( *((( *((( *(((*(((*(((-* *(((-* *(( *((/ *((/ *( *(/ *(/ * * * 空
)/F)/G)*H /F)/G)*H F)/Hale Waihona Puke Baidu)*H
)/G)*H /G)*H
G)*H )*H *H
H 空 空
ABABABABABAB-C AB-C AB-CD AB-CD AB-CDE AB-CDE*AB-CDE*AB-CDE*-F AB-CDE*-F/ AB-CDE*-F/ AB-CDE*-F/G AB-CDE*-F/G/ AB-CDE*-F/G/* AB-CDE*-F/G/*H AB-CDE*-F/G/*H*
*D)+E D)+E )+E +E E 空 空
输入 (A-B)*(((C-D*E)/F)/G)*H
A-B)*(((C-D*E)/F)/G)*H -B)*(((C-D*E)/F)/G)*H B)*(((C-D*E)/F)/G)*H
)*(((C-D*E)/F)/G)*H
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该
操作符“/” 若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 运算符优先级相同,弹出栈顶运算符,并把当前运算符压入堆栈
理由 操作数 操作数
操作数 操作数 操作数 理由 操作数 操作数
理由 操作数
*(((C-D*E)/F)/G)*H (((C-D*E)/F)/G)*H ((C-D*E)/F)/G)*H
(C-D*E)/F)/G)*H C-D*E)/F)/G)*H -D*E)/F)/G)*H
D*E)/F)/G)*H *E)/F)/G)*H E)/F)/G)*H
理由
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 开括号。 当前运算符“+”低于栈顶运算符“*” 理由
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该 运算符优先级相同
若它是一个闭括号(右括号),则弹出操作符到输出,直到遇到一个开括号。弹出并丢弃该
输出
空 空 A
A AB
ABABAB-
AB-C AB-C
AB-CD AB-CD+ AB-CD+* AB-CD+*E AB-CD+*E
输出 空 空 A A AB AB* AB* AB* AB*C AB*C AB*CD AB*CD* AB*CD*+ AB*CD*+E AB*CD*+E+
输出 空 空 A A AB
输入
(A-B)*(C+D)+E A-B)*(C+D)+E -B)*(C+D)+E
B)*(C+D)+E )*(C+D)+E
*(C+D)+E (C+D)+E C+D)+E
+D)+E D)+E
)+E +E E 空 空
输入 (A*B)+(C*D)+E A*B)+(C*D)+E
*B)+(C*D)+E B)+(C*D)+E )+(C*D)+E
操作数D 操作数E 操作数F 操作数G
堆栈内容(右边为栈顶)
空 ( (
((-
空 * *(
*( *(+
*(+ * + + 空
堆栈内容(右边为栈顶)
空 ( ( (* (* 空 + +( +( +(* +(* + + + 空
堆栈内容(右边为栈顶)
空 ( ( ((-
空 * *( *(( *((( *((( *(((*(((*(((-* *(((-* *(( *((/ *((/ *( *(/ *(/ * * * 空
)/F)/G)*H /F)/G)*H F)/Hale Waihona Puke Baidu)*H
)/G)*H /G)*H
G)*H )*H *H
H 空 空
ABABABABABAB-C AB-C AB-CD AB-CD AB-CDE AB-CDE*AB-CDE*AB-CDE*-F AB-CDE*-F/ AB-CDE*-F/ AB-CDE*-F/G AB-CDE*-F/G/ AB-CDE*-F/G/* AB-CDE*-F/G/*H AB-CDE*-F/G/*H*