/*
問題描述
輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。
輸入格式
輸入一行,包含乙個表示式。
輸出格式
輸出這個表示式的值。
樣例輸入
1-2+3*(4-5)
樣例輸出
-4資料規模和約定
表示式長度不超過100,表示式運算合法且運算過程都在int內進行。
*/
#include
#include
typedef
struct
nur;
typedef
struct
fh;void
calcu
(nur*
,fh*);
void
popfh
(fh*
,char*)
;void
pushfh
(fh*
,char);
void
pushnur
(nur*
,int);
intssz
(char*)
;void
popnur
(nur*
,int*)
;void
cal(
char*)
;int
yxj(
char);
intmain
(void
)void
popfh
(fh*fhs,
char
*s)void
calcu
(nur*nurs,fh*fhs)
pushnur
(nurs,a);}
void
pushfh
(fh*f,
char ch)
void
pushnur
(nur*n,
int num)
intssz
(char
*z)void
popnur
(nur*n,
int*v)
void
cal(
char
*zfc)
; nurs.top =-1
; fh fhs =
; fhs.top =-1
;int flag =0;
while
(*zfc !=
'\0'
)else
flag =1;
tmp =
10*tmp +
(*zfc -
'0')
;pushnur
(&nurs,tmp);}
elseif(
*zfc ==
'+'||
*zfc ==
'-'||
*zfc ==
'*'||
*zfc ==
'/')
pushfh
(&fhs,
*zfc);}
elseif(
*zfc ==
'(')
else
char ch;
popfh
(&fhs,
&ch);}
zfc++;}
while
(fhs.top >=0)
printf
("%d"
,nurs.sz[0]
);}int
yxj(
char c)
}
表示式計算
棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...
表示式計算
表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...
表示式計算
表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4資料規模和約定 表示式長度不超過100,表示式運算...