中綴轉逆波蘭然後計算表示式的值

2022-09-11 10:36:14 字數 1007 閱讀 4030

用乙個棧裝操作符

1、遇到數字就輸出

2、遇到操作符,如果棧空直接放入,如果左括號直接放入,如果是右括號,輸出並彈出棧頂直到遇到左括號,再把左括號彈出(不用輸出),

如果是四則運算符,如果當前比棧頂優先順序高,直接放入,否則輸出並彈出所有優先順序大於等於當前運算子的,再放入當前運算子。

最後將棧裡剩下的元素輸出彈出

每次彈兩個,算一下,放回去,最後結果就是棧剩下的最後乙個元素

#includeusing namespace std;

class solution

else if(c == '+' || c == '-')

return -1;

}int calculate(string s)

if('0' <= s[i] && s[i] <= '9')

else

else

else if(s[i] == ')')

op.pop();

}else

else

op.push(s[i]);}}

}}

}suffix.push_back(' ');

while(!op.empty())

coutbool flag = false;

for(int i = 0; i < n; i++)

num = 0;

flag = false;

}else if('0' <= suffix[i] && suffix[i] <= '9')

else if(suffix[i] == '+' || suffix[i] == '-' || suffix[i] == '*' || suffix[i] == '/')

else if(suffix[i] == '-')

else if(suffix[i] == '*')

else }}

return s.top();

}};int main()

中綴表示式轉逆波蘭表示式

op icp064 21isp015 36思路假設表示式為string ex a b c d 將表示式處理為 a b c d 以 做末尾標識,初始時 棧s 中放入乙個 int i 0 icp表示表示式當前掃瞄項的字元的優先順序,isp表示棧頂操作符的優先順序 優先順序表如上 當 棧非空 或 當前掃瞄...

中綴表示式轉逆波蘭式並計算

include include include include include include include include include using namespace std 對於輸入串,處理分離出數字串,將其轉換成數字,分離運算子,中綴轉字尾 若當前處理的單位是數字,將其入隊 字串佇列 如...

中綴表示式轉字尾(逆波蘭)表示式

原則 從左到右遍歷中綴表示式 1 如果是數字則直接輸出 2 如果是左括號,直接入棧 3 如果是右括號,直接棧頂元素出棧並輸出,直到遇到左括號,左括號只出棧,不輸出 4 如果是符號,如果優先順序不高於棧頂符號則棧頂元素依次出棧並輸出 如果遇到 符號,如果棧非空並且棧頂元素不是左括號,則出棧並且輸出,否...