表示式求解

2021-09-04 02:09:21 字數 1003 閱讀 1038

構造包含頂指標,底指標和增量的結構體。然後分別構造乙個只包含運算子的棧(optr)和只包含數字的棧(opnd)。之後依次讀入所輸入的表示式。判斷是不是數字,如果是數字就將數字放入數字棧(opnd)。如果不是即運算子,讓運算子棧棧頂元素和讀入的運算子進行比較。如果優先順序小於將讀入的運算子入棧,優先順序相等的就讓棧頂元素出棧,優先順序的大於的就讓棧頂元素彈棧,並且連續兩次讓數字棧彈棧,得到乙個運算子和兩個數字,進行計算,得到的結果放入數字棧。迴圈以上過程直到讀入的表示式字元為#為止。最後將數字棧出棧,即得到結果。

// 構造空棧char initstack (sqstack *s);// 讓e入棧char push(sqstack *s, char e);// 讓e出棧char pop(sqstack *s, char *e);// 返回棧頂第乙個元素char gettop(sqstack s);// 比較兩個運算子的優先順序,a,b中存放待比較的運算子,'>'表示a>b,'0'表示不可能出現的比較,這是通過二維陣列建立比較表實現的char precede(char a, char b);// 判斷輸入的某個字元是否是運算子int in(char c, char op[8]);// 四則運算計算char operate(char a, char n, char b);// 表示式計算,流程控制char evaluateexpression(sqstack optr, sqstack opnd);// 主函式,建立optr與opnd棧int main();

表示式求解

表示式求解是棧應用乙個典型的例子,其基本演算法思想為 1.首先初始化1個運算數棧和1個運算子棧,運算子棧填入 表示棧空。2.對輸入表示式進行逐字節解析,如果是運算元,則直接壓入運算數棧,如果是運算子則進行一下比較 1 如果棧頂運算子優先順序低於讀入運算子優先順序,則將運算子壓棧,繼續解析下面的位元組...

表示式求解

1 解題思路 構造包含頂指標,底指標和增量的結構體。然後分別構造乙個只包含運算子的棧 optr 和只包含數字的棧 opnd 之後依次讀入所輸入的表示式。判斷是不是數字,如果是數字就將數字放入數字棧 opnd 如果不是即運算子,讓運算子棧棧頂元素和讀入的運算子進行比較。如果優先順序小於將讀入的運算子入...

表示式求解程式

均已除錯通過,編譯器為dev c include include include include define stack size 100 char operator 7 用6出錯!int result,ch2 char opr 定義全域性變數 優先關係 char prioritytable 7 ...