問題描述
對以逆波蘭式的表示式求值。
問題分析
上一題是把中綴表示式程式設計逆波蘭式,要對逆波蘭的表示式的求解就更簡單些了。
**
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.棧還有迷宮演算法是不是?現在腦子裡之...