若已經給出了字尾式,求值,其規則為,建立乙個棧,從左到右計算。若為數值,入棧,若為運算子,讓棧頂兩個數值運算,且運算順序為從左到右,並把新的元素重新入棧。此題用陣列也可解決,
time limit: 1000ms
memory limit: 65536kb
submit
statistic
problem description
對於乙個基於二元運算子的字尾表示式(基本運算元都是一位正整數),求其代表的算術表示式的值。
input
輸入乙個算術表示式的字尾式字串,以『#』作為結束標誌。
output
求該字尾式所對應的算術表示式的值,並輸出之。
example input
59*684/-3*+#
example output
57
hint
基本運算元都是一位正整數!
**:
#include
#include
#include
#define stackincrement 10000 //儲存空間分配增量
#define stackinitsize 10000 //儲存空間初始分配量
typedef int selemtype;
typedef struct
sqstack;
int initstack(sqstack *s) //初始化棧
int push(sqstack *s,int e)//入棧函式
*(s->top) = e;//進行進棧操作
s->top++;
return 1;
}int f(char a,int b,int c)
int judge(char s,sqstack *s)
int main()
else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
}printf("%d",*(s.top-1));//最後輸出棧頂元素
printf("\n");
return 0;}
法二:陣列。
view source
print?
01
#include
02
#include
03
#include
04
int
f(
char
a,
int
b,
int
c)
05
16
int
judge(
char
s,
int
a,
int
n)
17
23
int
main()
24
40
else
if
(s[i]==
'+'
||s[i]==
'-'
||s[i]==
'*'
||s[i]==
'/'
)
41
45
}
46
printf
(
"%d"
,a[0]);
47
48
printf
(
"\n"
);
49
50
return
0;
51
}
52
資料結構實驗之棧三 字尾式求值
time limit 1000ms memory limit 65536k 有疑問?點這裡 對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。輸入乙個算術表示式的字尾式字串,以 作為結束標誌。求該字尾式所對應的算術表示式的值,並輸出之。59 684 3 57 基...
資料結構實驗之棧三 字尾式求值
time limit 1000ms memory limit 65536k 對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。輸入乙個算術表示式的字尾式字串,以 作為結束標誌。求該字尾式所對應的算術表示式的值,並輸出之。59 684 3 57 include i...
資料結構實驗之棧三 字尾式求值
abc defg hc 資料結構實驗之棧三 字尾式求值 time limit 1000msmemory limit 65536kb64bit io format lld llu submit status practice sdutoj 2133 description 對於乙個基於二元運算子的字尾...