(二)請將下列表示式轉成中序(Infix)(5 分) AB + D ∗ EBA //+ AD ∗ C /+ CD ∗ +A − B + CD ∗ −

内容查看

偵測到這是後序式(Detected Postfix Expression.)
原始後序式(Original): A B + D * E B A / / + A D * C / + C D * + A – B + C D * –
轉換後的中序式子(Infix): ((((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B) – (C * D))
逐步轉換:
初始化:開始一個空堆疊。
處理 ‘A B +’:
將 ‘A’ 推入堆疊。
將 ‘B’ 推入堆疊。
遇到 ‘+’,彈出 ‘B’ 和 ‘A'(頂部兩個元素),創建子運算式 (A + B),將其推回堆疊。
堆疊:(A + B)
處理 ‘D *’:
將 ‘D’ 推入堆疊。
遇到’*’,彈出 ‘D’ 和 (A + B),創建子運算式 ((A + B) * D),將其推回堆疊。
堆疊:((A + B) * D)
處理 ‘E B A / / +’:
將 ‘E’ 推入堆疊。
將 ‘B’ 推入堆疊。
將 ‘A’ 推入堆疊。
遇到 ‘/’,彈出 ‘A’ 和 ‘B’,創建子運算式 (B / A),將其推回堆疊。
彈出 ‘E’ 和 (B / A),創建子運算式 (E / (B / A)),將其推回堆疊。
遇到’+’,彈出 (E / (B / A)) 和 ((A + B) * D),創建子運算式 (((A + B) * D) + (E / (B / A))),將其推回堆疊。
堆疊:(((A + B) * D) + (E / (B / A)))
處理 ‘A D * C / +’:
將 ‘A’ 推入堆疊。
將 ‘D’ 推入堆疊。
遇到’*’,彈出 ‘D’ 和 ‘A’,創建子運算式 (A * D),將其推回堆疊。
將 ‘C’ 推入堆疊。
遇到 ‘/’,彈出 ‘C’ 和 (A * D),創建子運算式 ((A * D) / C),將其推回堆疊。
遇到’+’,彈出 ((A * D) / C) 和 (((A + B) * D) + (E / (B / A))),創建子運算式 ((((A + B) * D) + (E / (B / A))) + ((A * D) / C)),將其推回堆疊。
堆疊:((((A + B) * D) + (E / (B / A))) + ((A * D) / C))
處理 ‘C D * +’:
將 ‘C’ 推入堆疊。
將 ‘D’ 推入堆疊。
遇到’*’,彈出 ‘D’ 和 ‘C’,創建子運算式 (C * D),將其推回堆疊。
遇到’+’,彈出 (C * D) 和 ((((A + B) * D) + (E / (B / A))) + ((A * D) / C)),創建子運算式 (((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)),將其推回堆疊。
堆疊:(((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D))
處理 ‘A -‘:
將 ‘A’ 推入堆疊。
遇到’-‘,彈出 ‘A’ 和 (((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)),創建子運算式 ((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A),將其推回堆疊。
堆疊:((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A)
處理 ‘B +’:
將 ‘B’ 推入堆疊。
遇到’+’,彈出 ‘B’ 和 ((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A),創建子運算式 (((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B),將其推回堆疊。
堆疊:(((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B)
處理 ‘C D * -‘:
將 ‘C’ 推入堆疊。
將 ‘D’ 推入堆疊。
遇到’*’,彈出 ‘D’ 和 ‘C’,創建子運算式 (C * D),將其推回堆疊。
遇到’-‘,彈出 (C * D) 和 (((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B),創建子運算式 ((((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B) – (C * D)),將其推回堆疊。
堆疊:((((((((A + B) * D) + (E / (B / A))) + ((A * D) / C)) + (C * D)) – A) + B) – (C * D))
完成:
在結尾,堆疊中只應剩下一個元素,這是最終的中缀運算式。

点点赞赏,手留余香 给TA打赏

AI创作

0

評論0

支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
顯示驗證碼

社交帳號快速登錄