資料結構實驗之棧三:字尾式求值 SDUT 2133
阿新 • • 發佈:2019-01-27
題目描述
對於一個基於二元運算子的字尾表示式(基本運算元都是一位正整數),求其代表的算術表示式的值。輸入
輸入一個算術表示式的字尾式字串,以‘#’作為結束標誌。輸出
求該字尾式所對應的算術表示式的值,並輸出之。示例輸入
59*684/-3*+#
示例輸出
57
提示
基本運算元都是一位正整數!運用棧的思想很簡單
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int main() { char c; int num[100100]; int j=0; while(~scanf("%c",&c),c!='#') { if(c>='0'&&c<='9') { num[j++]=c-'0'; } else { int p,k1,k2; if(num[j-1]>num[j-2]) { k1=num[j-1]; k2=num[j-2]; } else { k1=num[j-2]; k2=num[j-1]; } if(c=='*') { p=k1*k2; } if(c=='-') { p=k1-k2; } if(c=='+') { p=k1+k2; } if(c=='/') { p=k1/k2; } j=j-2; num[j++]=p; } } printf("%d\n",num[0]); return 0; }