我們生活中的四則運算稱為中綴表示式,而資料結構中使用棧進行四則運算的表示式稱為 字尾表示式(逆波蘭表示式)。
原因是所有符號是在要運算數字的後面出現的
下面看乙個 中綴表示式 9+(3-1)*3+10/2 是如何轉換成 9 3 1 - 3 * + 10 2 / + 。
1、字尾表示式計算結果
1、宣告乙個棧,從左到右遍歷表示式的每個數字與符號,
2、如果是數字,則進棧。如果是符號,則將棧頂的兩個元素彈出,進行計算,並將結果放進棧頂。直到得出結果。
中綴表示式 是如何轉換成 字尾的呢
1、宣告乙個棧,從左到右遍歷表示式的每個數字與符號,
2、如果是數字則輸出。如果是符號則判斷其與 棧頂符號的優先順序,是右括號或優先順序低於 棧頂符號(先乘除,後加減)
則棧頂元素依次出棧並輸出(優先順序 高於 棧頂符號,則放入棧)。並將當前符號進棧。依始直到完成。
字尾表示式 中綴到字尾表示式
輸入空格跳出迴圈 while k getchar n 字尾表示式 此 僅限於0 9內的加減乘除 include include include define long 10 using namespace std typedef struct stack qstack void init qstac...
字尾表示式
字尾表示式的計算和中綴表示式轉字尾表示式 此處的運算用的是鍊錶的表示方法 以下為三個會涉及到的標頭檔案 error.h 字尾表示式 created by kyle.yang on 14 12 2.ifndef error h define error h include using namespac...
字尾表示式
對於乙個算術表示式我們的一般寫法是這樣的 3 4 5 6 這中寫法是中序表示式 而後序表示式則是將運算子放在運算元的後面,如 3 4 5 6 可以看出後序表示式中沒有括號,只表達了計算的順序,而這個順序恰好就是計算器中的一般計算順序。建立乙個棧s 從左到右讀表示式,如果讀到運算元就將它壓入棧s中,如...