表示式求值 棧 用C 實現

2021-07-31 18:17:37 字數 2131 閱讀 3231

1 #include 2

3 #include 4

5 #include 6

7 #include 8

9 #include 10

11using

namespace

std;

1213

1415

char precede(char a, char b) ,

2223 ,

2425 ,

2627 ,

2829 ,

3031 ,

3233 ,

3435

3637 }; //

優先順序**

3839

for(i=0; i<8; i++)

4041

if(table[0][i]==a) //

尋找運算子a

4243

break;44

45for(j=0; j<8; j++) //

尋找運算子b

4647

if(table[j][0]==b)

4849

break;50

51return

table[j][i];

5253}54

5556

57bool calcu_temp(double a, char theta, double b, double &r)

8283

return

true;84

85}8687

8889

bool isoper(char ch) ;

9293

inti;

9495

for(i=0; i<7; i++)

102103

return

false

;104

105}

106107

108109

bool calculate(char s, double &result)

152153

if(!point) //

整數部分

154155 num = num * 10 + ( s[j] - 48

);156

157else

164165 j++;

166167

}168

169 i =j;

170171 num_stack.push(num); //

將該數字壓入棧中

172173

}174

175else

if(isoper(s[i]))

218219

}220

221}

222223 result = num_stack.top(); //

最後數字棧中的數即為表示式的最終結果

224225

return

true

;226

227}

228229

230231

bool check(char s)

246247

if(flag)

248249

return

false

;250

251else

252253

return

true

;254

255}

256257

258259

intmain()

287288 s2[j++] = '='

;289

290 s2[j] = '\0'

;291

292if(check(s2))

303304

else

305306 printf("

括號不匹配\n");

307308

}309

310return0;

311312 }

棧實現表示式求值(C

為了實現用棧計算算數表示式的值,需設定兩個工作棧 用於儲存運算子的棧opter,以及用於儲存運算元及中間結果的棧opval。演算法基本思想如下 1 首先將運算元棧opval設為空棧,而將 作為運算子棧opter的棧底元素,這樣的目的是判斷表示式是否求值完畢。2 依次讀入表示式的每個字元,表示式須以 ...

C語言 用棧實現表示式求值 順序棧

棧的基本操作 優先順序函式 precede 求值函式 operate 判斷操作符函式 in 表示式求值函式 evaluateexpression 其他 操作符棧 optr 運算元棧 opnd 請輸入表示式 3 5 2 第一種輸入方式是直接打出表示式進行整體輸入,而第二種則是以乙個乙個的方式讀入,第一...

表示式求值 棧實現

宣告 僅個人小記 演算法思想 一 設定乙個運算子棧,設定乙個字尾表示式字串 二 從左到右依次對中綴表示式中的每個字元ch分別進行一下處理,直至表示式結束 1.若ch是左括號 將其入棧 2.若 ch 是數字,將其後連續若干數字新增到字尾表示式字串之後,在新增空格作為分割符 3.若ch是運算子,先將棧頂...