棧的運用 6 逆波蘭式求值

2022-01-17 08:10:26 字數 1090 閱讀 2045

問題描述 

對以逆波蘭式的表示式求值。

問題分析 

上一題是把中綴表示式程式設計逆波蘭式,要對逆波蘭的表示式的求解就更簡單些了。

**  

view code

1 #include2 #include3

#define stack_init_size 100

4#define stackincrement 10

5 typedef int

elemtype;

6 typedef struct

stack;

1112

int initstack(stack &s)

1321

int push(stack &s,elemtype e)

2229 *s.top++=e;//

先賦值給s.top然後再將指標加一

30return1;

31}32int pop(stack &s,elemtype &e)

37bool isoperator(char

c);38

intmain()

3954

else

55 99}

100else

101105

106}

107}

108 printf("

%d\n

",a[j-1

]);

109return

1;

110}

111bool isoperator(char

c)121 }

總結   

這道題開始想的時候只用到陣列的變換,a[j]=a[j-2]+a[j-1]可以看到**中的注釋,就是自己開始的想法,剛開始用簡單的資料測試的時候沒有出現問題,但是資料變複雜了就出現問題了,比如 123*+這個計算的結果應該是7,但是輸出的結果是9,後來發現問題了,這裡計算的步驟是2*3+3=9,所以這就出現問題了,這也是為什麼要用棧的原因吧,先將兩個數出棧,將結果計算出來後再入棧,就不會出現這樣的問題了,開始,還有個小問題,沒有把字元轉換成整型,計算出來的結果是比較大的資料。

逆波蘭式求值

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

棧的運用(5)轉換逆波蘭式

恢復內容開始 養成良好的習慣,看了下別人寫的部落格,條理清晰,美觀,整潔。借鑑下。問題描述 設表示式有單字母變數和雙目四則運算構成,試寫一演算法,將書寫正確的表示式轉換為逆波蘭表示式。問題分析 要準確地理解逆波蘭式,比如表示式a b c a b e的逆波蘭式是abc a be 根據這一點可以理清演算...

逆波蘭式 棧實現

因為做二叉樹非遞迴的前後中遍歷,用到棧的方法。xpp說那就乾脆把四則運算,逆波蘭式 棧的實現做了。這是參考別人的程式寫的,注釋比較亂。而且這個是直接實現計算機計算的四則運算,沒有將逆波蘭的表示式列印出來。今天腰太酸了,明天改一改,把逆波蘭式列印出來噻333333.棧還有迷宮演算法是不是?現在腦子裡之...