【題目描述】
從鍵盤讀入乙個字尾表示式(字串),只含有0-9組成的運算數及加(+)、減(—)、乘(*)、除(/)四種運算子。每個運算數之間用乙個空格隔開,不需要判斷給你的表示式是否合法。以@作為結束標誌。
比如,16–9*(4+3)轉換成字尾表示式為:16□9□4□3□+*–,在字元陣列a中的形式為:
棧中的變化情況:
執行結果:-47
【輸入】
乙個字尾表示式。
【輸出】
乙個字尾表示式的值。
【輸入樣例】
16 9 4 3 +*-@
【輸出樣例】
-47【**】
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
#define n 1000000007
char f[
100]
;stackh;
bool pool=
true
;void
caculate
(char c)
h.push
(b);
}bool
to_digit()
while
(in==
' ')if(
isdigit
(in)
) sum+
=in-
'0';
else
while
(in=
getchar()
,isdigit
(in)
) h.
push
(sum);}
intmain()
中綴表示式轉字尾表示式 求字尾表示式值
中綴表示式轉字尾表示式 佇列q和棧s q存放字尾表示式結果 s存放操作符 設棧頂元素top 當前讀取元素a 演算法如果s是空棧 a入棧非空棧 a不是操作符,a插入佇列q 如果a為 a入棧 否則,如果a為 把棧內操作符出棧依次插入佇列q,直至遇到得 元素出棧為止 否則,如果a優先順序大於top,a入棧...
計算表示式值(字尾表示式) 棧
處理表示式主要是對優先順序以及括號的判斷 1.運算子棧頂的優先順序小於加入的時,需要將所有的不評級的取出並計算,2.當遇到 時,需要括號內的運算全部處理 2.其他情況全部加入運算子棧和資料棧 include include include using namespace std typedef lo...
求字尾表示式的值
上篇文章介紹了 中綴表示式 轉 字尾表示式 這篇文章接著分享 計算字尾表示式的值 需求 求字尾表示式的值 輸入 字尾表示式 輸出 運算結果 from test05 stack.stack import stack import re defafter opt ret expr 運算元範圍 expr ...