我看的是殷人昆版的《資料結構》,在棧的應用中,介紹了字尾表示式,下面由我為大家稍微說明下字尾表示式的定義.
字尾表示式:也叫rpn或逆波蘭表示式。它是中綴表示式的替代形式。參加運算的運算元總在操作符前面。
例如:中綴表示式 a+b*(c-d)-e/f 對應的字尾表示式為:abcd-*+ef/-
詳細的字尾表示式的過程如上圖所示, 利用棧的特性生成字尾表示式。
//字尾表示式
#include #include using namespace std;
#include enum type
;struct cell
;int rpncount(cell a, size_t size)
else
{ int left, right;
right = s.top();
s.pop();
left = s.top();
s.pop();
switch(a[i]._num)
{case add:
s.push(left+right);
break;
case sub:
s.push(left-right);
break;
case mul:
s.push(left*right);
break;
case div:
s.push(left/right);
break;
default:
cout<
如有不正確的地方,希望能夠指出,大家一起學習,謝謝了。 棧應用 字尾表示式的計算
有關棧api詳情參看我的還有一篇博文 棧的鏈式儲存 api實現 遍歷字尾表示式中的數字和符號 對於數字 進棧 對於符號 從棧中彈出右運算元 從棧中彈出左運算元 依據符號進行運算 將運算結果壓入棧中 遍歷結束 棧中的唯一數字為計算結果 include include linkstack.h int i...
棧的應用 字尾表示式 括號匹配
一 字尾表示式 在我們日常生活中所見表示式都是中綴表示式,如 5 3 7 4 2 這中表示式符合我們的思維邏輯,可讀性強,但是不利於計算機的解析。由波蘭邏輯學家j.lukasiewicz發明出字尾表示式,比如上式轉變為字尾表示式 5 3 7 4 2 這種人類難以適應的表達順序,計算機卻很受用。1.計...
棧的應用 字尾表示式的轉化以及計算
將算術表示式存放在乙個字串中,之後從字串的第乙個字元開始讀取。若是數字,則直接進行輸出 若是左括號,則將其壓入棧中 若是右括號,則進行彈出並輸出,直至找到左括號,左括號彈出但不進行輸出,若無法找到左括號則證明有錯誤,輸出wrong並停止執行程式 若是操作符號,則與棧頂所存放的符號比較優先順序,若棧為...