鹹魚學資料結構和演算法 中綴表示式計算機求值

2021-10-16 12:56:35 字數 1334 閱讀 9802

目錄

一、中綴表示式計算機求值演算法介紹

二、中綴表示式計算機求值**實現

1.

通過乙個

index 

值(索引),來遍歷我們的表示式

2. 如果我們

發現是乙個數字,就直接入數棧

3. 如果發現

掃瞄到是乙個符號,

就分如下情況

3.1

如果發現當前的符號棧為 空,就直接入棧

3.2

如果符號棧有操作符,就進行比較,如

果當前的操作符的優先順序小於或者等於棧中的操作符, 就需要從數棧中

pop出兩個數

,在從符號棧中

pop出乙個符號,進行運算,將得到結果,入數棧,然後將當前的操作符入符號棧,

果當前的操作符的優先順序大於棧中的操作符, 就直接入符號棧.

4.當表示式掃瞄完畢,就順序的從 數棧和符號棧中pop出相應的數和符號,並執行.

5.最後在數棧只有乙個數字,就是表示式的結果

public class calculator 

// 當取出的運算子的優先順序小於等於運算子棧中運算子的優先順序

else if(operstack.priority(ch)<=operstack.priority((char)operstack.getstacktop()))else

}else

}system.out.println("——————----————運算子棧————————————————");

operstack.showstack();

system.out.println("—----—----——————數棧———————------—————");

numstack.showstack();

while (!operstack.isempty())

system.out.println("表示式的結果為:"+numstack.pop());

}}

鹹魚學資料結構與演算法 中綴表示式轉字首表示式

目錄 一 中綴表示式轉字首表示式演算法介紹 二 中綴表示式轉字首表示式 實現 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從右至左掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為右括號 則直接將此運...

鹹魚學資料結構和演算法 字尾表示式計算機求值

目錄 一 字尾表示式計算機求值演算法介紹 二 字尾表示式計算機求值 實現 從左至右掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 次頂元素 和 棧頂元素 並將結果入棧 重複上述過程直到表示式最右端,最後運算得出的值即為表示式的結果 例如 3 4 5...

資料結構 中綴表示式轉字尾表示式

話不多說上例子 1 2 3 4 5 1 2 3 4 5 中綴表示式轉字尾表示式思路分析 1.首先需要兩個棧運算子棧 s1和儲存中間結果的棧 s2 2.從左至右掃瞄中綴表示式 2.1當前為運算元,將其壓棧至s2 2.2當前為運算子 2.2.1如果s1為空或者棧頂運算子為左括號 則將此運算子直接入s1棧...