hdu 1237 簡單計算器 棧

2021-06-29 03:41:48 字數 732 閱讀 2397

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

#include

#include

#include

using

namespace

std;

char s[250],post[250];//s是輸入的中綴表示式,post是轉化出來的字尾表示式

stack

op;//存放運算子

stack

num;//存放運算過程中的數字

int isnum(char c)//判斷字元是否為數字

double opmode(char c)//運算子優先順序判定

void change()//將中綴表示式轉化為字尾表示式

}else

}op.push(s[i]);//優先順序大時或者上面操作後將當前運算子入棧}}

while(!op.empty())//物件處理完畢將棧中存留的運算子一併輸出

}double cal()//計算字尾表示式

if(hasnum) num.push(cur);

if(opmode(post[i])!=-1)//遇到運算子,提取棧頂兩個數字進行計算}}

return num.top();//輸出答案

}int main()

return

0;}

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 對於人腦,轉化過程是對表示式...

hdu 1237 簡單計算器 棧

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