hdu 1237簡單計算器 棧的運用

2022-08-03 00:42:14 字數 1309 閱讀 6053

簡單的棧的運用。

首先將數字和運算子分離,分別儲存在兩個陣列中,然後按原來的式子的順序,首先將第乙個數和第乙個運算子分別壓

如個自的棧,然後判取出兩個棧頭部的元素,判斷符號,如果是乘除就用當前數值乘取出的數字(優先),然後將乘後的數壓入棧,

如果是加則將數和取出的數按原序入棧,如果減,就把新的數變負,將數和取出的數按原序入棧。

最後棧中所有元素的和就是結果。

1 #include2 #include3 #include4 #include

5 #include6 #include7 #include8 #include9

using

namespace

std;

10char a[300

];11

char b[300

];12

double c[300

];13

int main(void)14

23double ss=1;24

double sum=0;25

int yy=0;26

for(i=l-1; i>=0; i--)//

從後往前迴圈分離,這樣取數比較容易。

2733

else

if(a[i]=='')

3437

else

if(a[i]=='

+'||a[i]=='

-'||a[i]=='

*'||a[i]=='/'

)3844}

45 c[yy]=sum;

46 stackque;//

數棧47 stackque1;//

字元棧48

if(yy==0)//

特判就乙個元素直接輸出

4952

else

5367

else

if(cc=='/'

)6872else

if(cc=='+'

)7377else

if(cc=='-'

)7882 que1.push(b[i-1

]);8384}

85double pp=0;86

while(!que.empty())//

最後棧中元素的和

8791 printf("

%.2f

",pp);92}

93 printf("\n"

);94}95

return0;

96 }

hdu 1237 簡單計算器 棧

這個題目是大部分人都是用棧來寫的,本週訓練老師也講了兩次棧的原理。自己最近也看了資料結構中與棧有關的內容,還是比較深刻理解了沒有括號情況下表示式求解。include include include using namespace std char s 250 post 250 s是輸入的中綴表示式,...

hdu 1237 簡單計算器(棧)

hdu 1237 簡單計算器 棧 如果是 就把原數壓入棧 如果是 就把相反數壓入棧 如果是 就把當前數和棧頂數計算後壓入棧 如果是 就把當前數和棧頂數計算後壓入棧 注意該題是3 2而不是3 2,有空格 include include include include includeusing name...

hdu1237 簡單計算器 棧

題目鏈結 題目給出的是中綴表示式,中綴表示式是我們習慣上用的計算表示式,人腦計算方便快速,但是計算機不然,計算機計算波蘭和逆波蘭表示式都很方便,但對中綴表示式通常需要轉化成字首或字尾表示式才方便計算。舉例 4 2 5 7 11 轉化成逆波蘭的形式是 4 2 5 7 11 對於人腦,轉化過程是對表示式...