棧應用 字尾表示式的計算

2021-09-08 19:59:45 字數 676 閱讀 9764

有關棧api詳情參看我的還有一篇博文:棧的鏈式儲存 - api實現

遍歷字尾表示式中的數字和符號

對於數字:進棧

對於符號:

從棧中彈出右運算元

從棧中彈出左運算元

依據符號進行運算

將運算結果壓入棧中

遍歷結束:棧中的唯一數字為計算結果

#include #include "linkstack.h"

int isnumber3(char c)

int isoperator3(char c)

int value(char c)

int express(int left, int right, char op)

return ret;

}int compute(const char* exp)

else if (isoperator3(exp[i]))

else

i++;

} if ((linkstack_size(stack) == 1) && (exp[i] == '\0'))

else

linkstack_destroy(stack);

return ret;

}int main()

project檔案詳情:

github

棧的應用 字尾表示式

我看的是殷人昆版的 資料結構 在棧的應用中,介紹了字尾表示式,下面由我為大家稍微說明下字尾表示式的定義.字尾表示式 也叫rpn或逆波蘭表示式。它是中綴表示式的替代形式。參加運算的運算元總在操作符前面。例如 中綴表示式 a b c d e f 對應的字尾表示式為 abcd ef 詳細的字尾表示式的過程...

棧的應用 字尾表示式的轉化以及計算

將算術表示式存放在乙個字串中,之後從字串的第乙個字元開始讀取。若是數字,則直接進行輸出 若是左括號,則將其壓入棧中 若是右括號,則進行彈出並輸出,直至找到左括號,左括號彈出但不進行輸出,若無法找到左括號則證明有錯誤,輸出wrong並停止執行程式 若是操作符號,則與棧頂所存放的符號比較優先順序,若棧為...

棧的應用 字尾表示式 括號匹配

一 字尾表示式 在我們日常生活中所見表示式都是中綴表示式,如 5 3 7 4 2 這中表示式符合我們的思維邏輯,可讀性強,但是不利於計算機的解析。由波蘭邏輯學家j.lukasiewicz發明出字尾表示式,比如上式轉變為字尾表示式 5 3 7 4 2 這種人類難以適應的表達順序,計算機卻很受用。1.計...