1、從左至右掃瞄一中綴表示式。
2、若讀取的是運算元,則判斷該運算元的型別,並將該運算元存入運算元堆疊
3、若讀取的是運算子
(1) 該運算子為左括號"(",則直接存入運算子堆疊。
(2) 該運算子為右括號")",則輸出運算子堆疊中的運算子到運算元堆疊,直到遇到左括號為止,此時拋棄該左括號。
(3) 該運算子為非括號運算子:
(a) 若運算子堆疊棧頂的運算子為左括號,則直接存入運算子堆疊。
(b) 若比運算子堆疊棧頂的運算子優先順序高,則直接存入運算子堆疊。
(c) 若比運算子堆疊棧頂的運算子優先順序低或相等,則輸出棧頂運算子到運算元堆疊,直至運算子棧棧頂運算子低於(不包括等於)該運算子優先順序,或為左括號,
並將當前運算子壓入運算子堆疊。
4、當表示式讀取完成後運算子堆疊中尚有運算子時,則依序取出運算子到運算元堆疊,直到運算子堆疊為空。
波蘭式和逆波蘭式
字首 中綴 字尾表示式是對表示式的不同記法,其區別在於運算子相對於運算元的位置不同,字首表示式的運算子位於運算元之前.中綴和字尾同理 雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。對計...
逆波蘭演算法
中綴表示式轉字尾表示式 棧實現1.從左到右掃瞄字串 2.如果遇到數字,就輸出 3.如果遇到運算子,1 棧空時,直接入棧 2 棧非空時,與棧頂元素進行優先順序比較,如果運算子優先順序大,入棧,反之,則彈出優先順序小的棧頂元素 並輸出 直到運算子符合入棧條件,入棧int judge char ch st...
字尾式 逆波蘭式
逆波蘭式 是波蘭邏輯學家盧卡西維奇 lukasiewicz 發明的一種表示 表示式的方法。這種表示方式把運算子寫在運算物件的後面,例如,把a b寫成ab 所以也稱為字尾式。這種表示法的優點是根據運算物件和算符的出現次序進行計算,不需要使用括號,也便於用械實現求值。對於 表示式x a b c d 其字...