中綴表示式:a+b*c-(d+e)
第一步:
按照運算子的優先順序對所有的運算單位加括號:((a+(b*c))-(d+e))
第二步:
字首:把運算符號移動到對應的括號前面:-( +(a *(bc)) +(de))
把括號去掉:-+a*bc+de 字首表示式
字尾:把運算符號移動到對應的括號後面:((a(bc)* )+ (de)+ )-
把括號去掉:abc*+de+- 字尾表示式
從右至左掃瞄表示式,遇到數字時,將數字入棧,遇到運算子時,彈出棧頂的兩個數,用運算子對它們計算,將結果入棧,重複上述過程直到掃瞄完畢。(出棧的兩個元素中,先出來的在符號左邊,後出來的在符號右邊)
過程:e、d入棧,掃瞄到+,d、e出棧,計算結果(d+e)入棧,c、b入棧,掃瞄到*,b、c出棧,計算結果b*c入棧,a入棧,掃瞄到+,a、b*c出棧,計算結果a+b*c入棧,掃瞄到-,a+b*c、(d+e)出棧,計算結果a+b*c-(d+e)
從左至右掃瞄表示式,遇到數字時,將數字入棧,遇到運算子時,彈出棧頂的兩個數,用運算子對它們計算,將結果入棧,重複上述過程直到掃瞄完畢。(出棧的兩個元素中,先出來的在符號右邊,後出來的在符號左邊)
過程:a、b、c入棧,掃瞄到*,c、b出棧,計算結果b*c入棧,掃瞄到+,b*c、a出棧,計算結果a+b*c入棧,d、e入棧,掃瞄到+,e、d出棧,計算結果(d+e)入棧,掃瞄到-,(d+e)、a+b*c出棧,計算結果a+b*c-(d+e)
字首,中綴,字尾表示式轉換
title 字首,中綴,字尾表示式轉換 date 2017 09 10 19 45 09 categories technology tags 在計算機中表示式有三種,字首表示式 波蘭式 中綴表示式,字尾表示式 逆波蘭式 如表示式 a b c d e f 字首表示式 a b cd ef 中綴表示式 ...
中綴式 字首式 字尾式 轉換
time limit 1000ms memory limit 65536kb submit statistic discuss problem description 小明在學習了資料結構之後,突然想起了以前沒有解決的算術表示式轉化成字尾式的問題,今天他想解決一下。因為有了資料結構的基礎小明很快就解...
中綴轉字尾和字首
中綴轉字尾 include using namespace std bool isoperator char ch intgetpriority char ch return level string postorder void trans string inorder s.pop else el...