#include #include#include
#include
#include
using
namespace
std;
struct
node
;string
str;
stack s;
queue q;
mapm;
void change() //
中綴表示式轉換為字尾表示式
q.push(temp);
}else
if(str[i]=='')
else
temp.op =str[i];
s.push(temp);
++i;}}
while(!s.empty()) //
轉換結束後棧為空,佇列儲存的是乙個完整的字尾表示式
}double
cal()
else
if(head.flag == 0
)
else
if(head.op == '-'
)
else
if(head.op == '*'
)
else
if(head.op == '
/') //
有可能出現除以零的非法,要特判,不過這裡沒寫
s.push(c);}}
return
s.top().num;
}int
main()
計算中綴表示式
計算中綴表示式 可以稱得上是乙個特別經典的關於棧的演算法題,幾乎在所有資料結構教材中都會涉及,而且很多公司面試或者筆試的時候都會把這道題作為乙個考察點。可以說,這是一道必須要掌握的演算法題。中綴表示式 字尾表示式等概念在這裡就不贅述了,讓我們直奔主題。題目 輸入乙個中綴表示式,計算其結果。輸入的前提...
中綴表示式計算
雙棧法 數字棧和運算子棧 1.從前向後遇見數字就壓入數字棧 2.遇見左括號壓棧 3.遇見右括號則彈出數字棧頂兩個數字,和乙個運算子棧乙個運算子進行計算,直至遇見左括號,退括號,計算結果壓棧 4.遇見運算子,若符號棧頂的元素小於當前運算子優先順序,則入棧 若相等或大於則數字彈出倆,符號彈出乙個計算,直...
中綴表示式 字首表示式 字尾表示式 的計算方法
35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫 其實僅僅是一種表示式子的方式而已 不被你習慣的方式 乙個中綴式到其他式子的轉換方法 這裡我給出乙個中綴...