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

2021-09-01 02:26:44 字數 1018 閱讀 9281

將算術表示式存放在乙個字串中,之後從字串的第乙個字元開始讀取。

若是數字,則直接進行輸出;

若是左括號,則將其壓入棧中;

若是右括號,則進行彈出並輸出,直至找到左括號,左括號彈出但不進行輸出,若無法找到左括號則證明有錯誤,輸出wrong並停止執行程式;

若是操作符號,則與棧頂所存放的符號比較優先順序,若棧為空或優先於棧頂存放的符號,則壓入棧中,否則進行彈出操作直至棧為空或者不再優先於棧頂存放的符號時停止,並將該符號壓入棧中。在最後將棧中存放的標點符號全部彈出並輸出。:

//規定優先順序

int priority(char c)

//轉化為字尾表示式

stringstream ss;

for (int i=0;ipriority(s1.topvalue())) s1.push(a[i]);

else {

while(s1.topvalue()!=0 or score<=priority(s1.topvalue() )){

ss同樣,從字串的第乙個字元開始進行處理,

若為空格,則進行判斷,若是數字,即is0函式為真或者n不為0則將這個數字壓入棧中並跳過此次迴圈;

若是數字,則將其放到n中,並且將is0置為真;

若是標點符號,則彈出兩個數字並進行相應操作,並將結果壓入棧中

最後棧中只剩下乙個數字,即為結果,若小於或大於乙個數字均為錯誤,進行輸出。若是數字,則將其放到n中,並且將is0置為真;

棧的應用 字尾表示式

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

棧應用 字尾表示式的計算

有關棧api詳情參看我的還有一篇博文 棧的鏈式儲存 api實現 遍歷字尾表示式中的數字和符號 對於數字 進棧 對於符號 從棧中彈出右運算元 從棧中彈出左運算元 依據符號進行運算 將運算結果壓入棧中 遍歷結束 棧中的唯一數字為計算結果 include include linkstack.h int i...

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

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