title: 字首,中綴,字尾表示式轉換
date: 2017-09-10 19:45:09
categories: 『technology』
tags:
在計算機中表示式有三種,字首表示式(波蘭式),中綴表示式,字尾表示式(逆波蘭式)。
如表示式:a+b*(c-d)-e/f
字首表示式:-+a*b-cd/ef
中綴表示式:a+b*(c-d)-e/f
字尾表示式:abcd-*+ef/-
原理不難,我們遇到遇到運算元的時候直接輸出,當遇到操作符(包括『(』,『+』,『-』,『*』,『/』)的時候,我們需要把符號壓入到棧中,
我們需要依次從棧頂彈出符號,直到遇到『(』,並且要將『(』彈出。如:(a*(b+c)),棧中的是(*(+,當遇到『)』的時候,我們要彈出『+』,『(』。
此時沒什麼要說的,直接壓棧。
我們要把棧頂元素的符號的優先順序跟輸入的符號的優先順序進行對比,如果棧頂優先順序高的話,我們就要把棧頂元素依次彈出,直到棧頂的優先順序低於輸入的優先順序或者棧空。
如:a+b+c+d,跟a+b*c+d得到的符號順序就不一樣,原因就是這個優先順序的問題。
毫無疑問,直接輸出
簡便方法
中綴表示式(a+b) * c * (d-e/f) 轉成字首,字尾表示式
中綴表示式 轉換為 字首 字尾表示式
考慮表示式a b c。a b c 是等價的字尾表示式。我們已經注意到,運算元 a,b 和 c 保持在它們的相對位置。只有操作符改變位置。再看中綴表示式中的運算子。從左到右出現的第乙個運算子為 然而,在字尾表示式中,在結束位置,因為下乙個運算子 的優先順序高於加法。原始表示式中的運算子的順序在生成的字...
字首 中綴 字尾表示式
它們都是對表示式的記法,因此也被稱為字首記法 中綴記法和字尾記法。它們之間的區別在於運算子相對與運算元的位置不同 字首表示式的運算子位於與其相關的運算元之前 中綴和字尾同理。舉例 3 4 5 6 就是中綴表示式 3 4 5 6 字首表示式 3 4 5 6 字尾表示式 中綴表示式 中綴記法 中綴表示式...
字首 中綴 字尾表示式
最近筆試的過程中老是有中綴轉換為字首,或是中綴轉換為字尾的問題,資料結構學了這麼久真的是記不清了,今天重新複習了一下,藉此機會總結一下 中綴 我們正常理解的表示式的書寫方式 字首 操作符全部位於運算元的前面,運算元的順序為從右到左依次壓棧的順序,操作符為從左到右依次壓棧的順序 字尾 不包含括號,運算...