經典白話演算法之中綴表示式和字尾表示式

2021-09-02 02:49:41 字數 1103 閱讀 2203

一、字尾表示式求值

字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。

假定待求值的字尾表示式為:6 5 2 3 + 8 * + 3 + *,則其求值過程如下:

(1)遍歷表示式,遇到的數字首先放入棧中,依次讀入6 5 2 3 此時棧如下所示:

(2)接著讀到「+」,則從棧中彈出3和2,執行3+2,計算結果等於5,並將5壓入到棧中。

(3)然後讀到8(數字入棧),將其直接放入棧中。

(4)讀到「*」,彈出8和5,執行8*5,並將結果40壓入棧中。

而後過程類似,讀到「+」,將40和5彈出,將40+5的結果45壓入棧...以此類推。最後求的值288。

**:[cpp]view plain

copy

#include

#include

#include

#include

using

namespace

std;

intmain()

//如果是數字則入棧 if

(postarray[i]>=

'0'&&postarray[i]<=

'9')

//如果是字元則從棧讀出兩個數進行運算

else

else

if(postarray[i]==

'-')

else

if(postarray[i]==

'*')

else

if(postarray[i]==

'/')

}}//for

printf("%d\n"

,stack.top());

}//while

return0;

}

演算法之中綴表示式和字尾表示式

一 字尾表示式求值 字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。假定待求值的字尾表示式為 6 5 2 3 8 3 則其求值過程如下 1 遍歷表示式,遇到的數字首先放入棧中,依次讀入6 5 2 3 此時棧如下所示 2 接著讀到 則從棧中彈出3和2,執行3 2,計算結果等於5,並將5壓入...

演算法之中綴表示式和字尾表示式

一 字尾表示式求值 字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。假定待求值的字尾表示式為 6 5 2 3 8 3 則其求值過程如下 1 遍歷表示式,遇到的數字首先放入棧中,依次讀入6 5 2 3 此時棧如下所示 2 接著讀到 則從棧中彈出3和2,執行3 2,計算結果等於5,並將5壓入...

中綴表示式和字尾表示式

一 中綴表示式如何轉成字尾表示式?中綴表示式 符合人類閱讀 字尾表示式 符合計算機運算 1 遍歷中綴表示式中的數字和符號 2 對於數字 直接輸出 3 對於符號 左括號 進棧 運算符號 與棧頂符號進行優先順序比較 若棧頂符號優先順序低 此符號進棧 預設棧頂若是左括號,則左括號優先順序最低 若棧頂符號優...