淺談前、中、後綴表達式

淺談前、中、後綴表達式

前、中、後綴表達式是信息學奧林匹克競賽中比較雞肋的知識點。可是知識點在考綱範圍內,並且中綴表達式轉後綴表達式是比較有用的知識。因此在這裏爲你們簡單介紹一下。數據結構

以前在自學前、中、後綴表達式的時候,發現網上的不少博客和講解的思路都不是很明瞭,或者就是對新手不是很友好,感謝@JZYShurak的講解,讓我對這個東西創建了一個直觀的認識。因此我來補一篇比較基礎,比較好理解,語言比較簡潔的博客。但願能對各路大佬有所些許的幫助。spa


中綴表達式

中綴表達式就是咱們生活中經常使用的表達式,簡單來說,就是人能算的表達式。可是,計算機算不了。。(這裏說的計算機算不了不是說這個東西不能用計算機算,而是計算機算人能算的表達式的時候不是像咱們那樣思考)。博客

例子:class

\(6\times 12+9-14\)基礎

(PS一些可有可無的廢話:上面的幾個數字對博主有着一些特殊意義(斜眼笑))計算機科學


後綴表達式

爲何不用」前——中——後「這個順序介紹呢?由於中綴表達式是最容易理解的」小學三年級以上的水平就能懂「。然後綴表達式的理解和運算過程則涉及到了一種數據結構:棧。原理

若是對棧還不熟悉或者不明白,就請自行補習了,這應該是計算機科學中最基礎的數據結構了。im

還拿上面的例子:新手

\(6\times 12+9-14\)數據

後綴表達式的實現過程是這樣的:

首先,建一個存運算符號的棧,一個存數字的棧。

而後,碰到一個符號,就壓到符號棧中,碰到數字就壓到數字棧中,若是數字棧中有兩個數,就從符號棧中彈出一個符號來對這兩個數進行運算,把結果壓回數字棧中,以此類推。

好比,上面的式子就能夠寫成以下的後綴表達式:

\(\times 6 + 12 \quad 9 - 14\)

顯然,針對一個肯定的中綴表達式,其所對應的後綴表達式不惟一。


前綴表達式

前綴表達式的實現原理和後綴表達式大同小異,而惟一須要注意的是,前綴表達式是從後往前轉的!!

也就是說,上面的例子\(6\times 12+9-14\)能夠被轉成以下的前綴表達式:

\(14-9 \quad 12+6\times\)

相關文章
相關標籤/搜索