中綴 字首 字尾互相轉換

2021-09-28 14:04:30 字數 716 閱讀 3634

中綴表示式: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...