日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构:表达式之中缀转后缀

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构:表达式之中缀转后缀 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

中綴表達式是最常用的算術表達式,運算符在運算數(shù)中間,運算需要考慮運算符優(yōu)先級.
后綴表達式是計算機容易運算的表達式,運算符在運算數(shù)后面,從左到右進行運算,無需考慮優(yōu)先級,運算呈線性結構.

先舉個簡單的轉(zhuǎn)換例子
2+9/3-5 (前綴)-> 2 9 3 / + 5 - (后綴)
先進行乘除再進行加減
運算規(guī)律,運算數(shù)位置不變,改變的是運算符位置
可以推棧實現(xiàn),用堆棧儲存等待中的運算符.
將當前運算符與最后一個等待的運算符比較.

具體轉(zhuǎn)換方式:
1.從左到右進行遍歷
2.運算數(shù),直接輸出.
3.左括號,直接壓入堆棧,(括號是最高優(yōu)先級,無需比較)(入棧后優(yōu)先級降到最低,確保其他符號正常入棧)
4.右括號,(意味著括號已結束)不斷彈出棧頂運算符并輸出直到遇到左括號(彈出但不輸出)
5.運算符,將該運算符與棧頂運算符進行比較,
如果優(yōu)先級高于棧頂運算符則壓入堆棧(該部分運算還不能進行),
如果優(yōu)先級低于等于棧頂運算符則將棧頂運算符彈出并輸出,然后比較新的棧頂運算符.
(低于彈出意味著前面部分可以運算,先輸出的一定是高優(yōu)先級運算符,等于彈出是因為同等優(yōu)先級,從左到右運算)
直到優(yōu)先級大于棧頂運算符或者棧空,再將該運算符入棧.
6.如果對象處理完畢,則按順序彈出并輸出棧中所有運算符.

再來解釋一下開始的簡單例子

再來解釋一下開始的簡單例子

括號的運算

選取慕課里何欽銘老師的案例

后綴表達式運算步驟:
(以堆棧儲存)
從左到右,遇到運算符就彈出相應的運算數(shù),運算后再把結果入棧.最終結果就是棧頂數(shù)的值.
(由于該運算為線性結構,具體運算時是不需要儲存輸出后的運算符,一般是輸出一個運算符就進行一次運算,不像圖中要儲存輸出狀態(tài).)
注意點:
有時候’-’(負號)是單目運算符,則要修改運算數(shù).
遇到其他運算符(如冪運算)也類似.

總結

以上是生活随笔為你收集整理的数据结构:表达式之中缀转后缀的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。