一、字尾表示式求值
字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。
假定待求值的字尾表示式為: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 對於符號 左括號 進棧 運算符號 與棧頂符號進行優先順序比較 若棧頂符號優先順序低 此符號進棧 預設棧頂若是左括號,則左括號優先順序最低 若棧頂符號優...