【題目鏈結】
【題目描述】
給出乙個表示式,其中運算子僅包含+,-,*,/,^
(加 減 乘 整除 乘方)要求求出表示式的最終值。
資料可能會出現括號情況,還有可能出現多餘括號情況。
資料保證不會出現大於或等於2
31'>
231的答案。
資料可能會出現負數情況。
輸入格式
輸入僅一行,即為表示式。
輸出格式
輸出僅一行,既為表示式算出的結果。
輸入樣例:
(2+2)^(1+1)
輸出樣例:16
【題解】:
1、處理括號問題,由於又多餘的括號,我們發現左括號是沒有用的,所以我們匹配盡量多的左括號,然後配上乙個右括號即可。
2、維護兩個棧的操作。
第乙個棧 是維護運算元,如果運算的時候就彈出兩個出來,然後運算結果又放回去,最後求數字棧的棧頂元素即可。
第二個棧 是維護乙個嚴格遞增的操作符,操作符是優先順序的。「+」 = 「-」
【**】**是仿造y總的寫法,不得不說,y總碼力十足。
1 #includeview code2 #include3 #include4
using
namespace
std;
56 stack < int >nums ;
7 stack < char >ops ;
8void
calc()
20nums.push( tmp ) ;21}
2223
intmain()
2444
nums.push(tmp);
45 i = j - 1
;46 }else
else
if( c == '
+' || c == '-'
)59 nums.push(-tmp);
60 i = j - 1
;61 }else
65 }else
if( c == '
*' || c == '/'
)else
if( c == '^'
)else
if( c == ')'
)else puts("
invaild operator !");
76}77}
78 cout << nums.top() <
79return0;
80 }
資料結構 表示式求值
一 實驗目的 通過乙個具體實際應用例子,加深對資料結構課程的理解,能夠綜合利用資料結構以及c語言的知識設計程式,應用到實際問題中去。二 實驗題目 常見的小型計算器可以通過輸入乙個由運算元和操作符組成的表示式計算出結構,設計乙個程式模擬上述功能。本實驗要求至少建立兩個棧和乙個運算子優先順序比較表,按照...
資料結構 表示式求值
程式 如下 1 include 2 include 3 include 45 define stack init size 100 6 define stackincrement 10 7 define overflow 2 8 define ok 1 9 define error 0 1011 t...
資料結構 表示式求值 1
在乙個表示式中,只有 0 9 請求出表示式的值。用整數除法 輸入格式 共1 行,為乙個算式。算式長度 30 其中所有資料在 0 2 31 1的範圍內 輸出格式 共一行,為表示式的值。輸入樣例 在這裡給出一組輸入。例如 1 3 2 7 2 69 2 輸出樣例 在這裡給出相應的輸出。例如 include...