數學表示式稱為中綴表示式,符合人的思考習慣
1 + 2 * 3
運算子放在數字後面,符合計算機運算
123*+
遍歷中綴表示式中的數字和符號:
左括號:入棧
運算符號:需要與棧頂符號進行優先順序比較:
遍歷結束:將棧中所有符號彈出並輸出。
例:
中綴表示式:1 + 2 * (5 - 3) - 4 / 2 + 1
1、數字1直接輸出;
結果:1 棧:空
2、+,由於棧中沒有符號,直接入棧;
結果:1 棧:+
3、數字2直接輸出;
結果:12 棧:+
4、*,由於棧頂符號+優先順序低於*,入棧;
結果:12 棧:+*
5、(,直接入棧;
結果:12 棧:+*(
6、數字5直接輸出;
結果:125 棧:+*(
7、-,由於棧頂符號(優先順序低於-,入棧;
結果:125 棧:+*(-
8、數字3直接輸;
結果:1253 棧:+*(-
9、),棧頂符號為-,彈出並輸出;棧頂符號為(,彈出;
結果:1253- 棧:+*
10、-,棧頂符號*優先順序高於-,彈出並輸出;棧頂符號+優先順序不低於-,彈出並輸出;棧為空,-入棧;
結果:1253-*+ 棧:-
11、數字4直接輸出;
結果:1253-*+4 棧:-
12、/,棧頂符號-優先順序低於/,入棧;
結果:1253-*+4 棧:-/
13、數字2直接輸出;
結果:1253-*+42 棧:-/
14、+,棧頂符號/優先順序高於+,彈出並輸出;棧頂符號-優先順序不低於+,彈出並輸出;棧為空,+入棧;
結果:1253-*+42/- 棧:+
15、數字1直接輸出
結果:1253-*+42/-1 棧:+
16、遍歷結束
結果:1253-*+42/-1 棧:+
17、輸出棧中的符號+;
18、此時已轉為字尾表示式:1253-*+42/-1+
遍歷字尾表示式中的符號以及數字:
從棧中彈出右運算元;
在彈出左運算元;
根據符號進行運算;
將結果入棧;
遍歷結束:棧中剩餘的唯一數字為計算結果
例:
字尾表示式:1253-*+42/-1+
1、數字1入棧;
棧:12、數字2入棧;
棧:12
3、數字5入棧;
棧:125
4、數字3入棧;
棧:1253
5、-,從棧中取出右運算元3,再取出左運算元5,5-3=2,2入棧
棧:122
6、*,從棧中取出右運算元2,再取出左運算元2,2*2=4,4入棧
棧:14
7、+,從棧中取出右運算元4,再取出左運算元1,1+4=5,5入棧
棧:58、數字4入棧
棧:54
9、數字2入棧
棧:542
10、/,從棧中取出右運算元2,再取出左運算元4,4/2=2,2入棧
棧:52
11、-,從棧中取出右運算元2,再取出左運算元5,5-2=3,3入棧
棧:312、數字1入棧
棧:31
13、+,從棧中取出右運算元1,再取出左運算元3,3+1=4,4入棧
棧:414、遍歷結束
15、棧中唯一數字為結果:4
1 + 2 * (5 - 3) - 4 / 2 + 1 = 4
計算正確
中綴表示式 字尾表示式
中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...
中綴表示式 字尾表示式
表示式 x a b c d e 的字尾表示形式可以為 c a xab cde b xa bc de c xabcd e d xabcde 表示式前字尾表達形式 乙個中綴式到其他式子的轉換方法 這裡我給出乙個中綴表示式 a b c d e 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...
中綴表示式 字首表示式 字尾表示式
中綴表示式 中綴記法 中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。...