逆波蘭式轉換

2021-09-13 08:57:35 字數 891 閱讀 4807

逆波蘭式轉換

1、輸入:算術表示式(字串形式資料)

2、輸出:逆波蘭式以及計算結果

轉換過程如下所示:

棧底放『#』,從左至右逐字讀取中綴式:

a.當當前字元為數字時,直接輸出;

b.當當前字元為"(「時,將其壓棧;

c.當當前字元為」)「時,則彈出堆疊中最上的」(「之前的所有運算子並輸出,然後刪除堆疊中的」(" ;

d.當當前字元為運算子時,則依次彈出堆疊中優先順序大於等於當前運算子的(到"(「之前為止),輸出,再將當前運算子壓棧;

e.當為」#"時,彈出所有棧中的內容輸出

//

// main.cpp

// 逆波蘭式

//// created by ahu-06 on 2019/2/24.

//#include #include #include #include #include using namespace std;

int precede(char a)

}bool compareprecde(char a,char b)

else

}int main()

else

exprstack.push(buffer[i]);}}

while (exprstack.top() != '#')

while (!numstack.empty())

reverse(opvec.begin(), opvec.end()); //輸出逆波蘭式列

波蘭式和逆波蘭式

字首 中綴 字尾表示式是對表示式的不同記法,其區別在於運算子相對於運算元的位置不同,字首表示式的運算子位於運算元之前.中綴和字尾同理 雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。對計...

字尾式 逆波蘭式

逆波蘭式 是波蘭邏輯學家盧卡西維奇 lukasiewicz 發明的一種表示 表示式的方法。這種表示方式把運算子寫在運算物件的後面,例如,把a b寫成ab 所以也稱為字尾式。這種表示法的優點是根據運算物件和算符的出現次序進行計算,不需要使用括號,也便於用械實現求值。對於 表示式x a b c d 其字...

逆波蘭式求值

先擺上資源 逆波蘭式求值 第一步 生成中綴表示式 第二步 中綴表示式轉換為字尾表示式 第三步 字尾表示式求值 本次實驗採用自主設計鏈式堆疊結構儲存資料 linkedstack儲存中綴及字尾表示式 pragma once include using namespace std typedef stru...