資料結構 如何計算字尾表示式 棧的乙個小應用

2021-07-25 05:38:56 字數 608 閱讀 5717

一、首先我們先了解下什麼是字尾表示式:

【定義】:不

包含括號,

運算子放在兩個運算物件的後面,所有的計算按

運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先

規則,如:(2 + 1) * 3 , 即2 1 + 3 *

【計算方法】:建立乙個棧s 。從左到右讀表示式,如果讀到

運算元就將它壓入棧s中,如果讀到n元運算子(即需要引數個數為n的運算子)則取出由棧頂向下的n項按操作符運算,再將運算的結果代替原棧頂的n項,壓入棧s中 。如果字尾表示式未讀完,則重複上面過程,最後輸出棧頂的數值則為結束。

二、現在我們來看一道計算字尾表示式的經典應用

資料結構棧之計算字尾表示式

對於乙個給定的字尾表示式,如果它是合法的 注意 次演算法是基於基本操作符是2元操作符且運算元為一位正整數!其求值的基本思想是 對於給定的表示式進行遍歷,假設遇到的是運算元就將其壓入棧 假設遇到的是操作符,將棧頂的兩個元素彈出,假設棧頂兩個元素依次為a,b a在上b在下 將次操作符應用於這兩個棧頂元素...

資料結構 棧 (七) 使用棧計算字尾表示式

字尾表示式的計算思路為 從左到右掃瞄字尾表示式,如果遇到運算元,將其壓入棧中,如果遇到操作符,則從棧中彈出兩個運算元,計算結果,然後把結果入棧,直到遍歷完字尾表示式,則計算完成,此時的棧頂元素即為計算結果。棧實現表示式計算 author lkf date 2019 03 18 16 37 publi...

資料結構 用棧實現對字尾表示式的計算

首先提一句,我所用的ide是vs2013。編譯器不同,所支援的特性也就不同 現在的c 已經發展到c 11版本,因此vs2008基本就不支援c 11新的特性 我們用字尾表示式,利用資料結構中的棧,進行結果的計算 如果是運算元,則壓棧 如果是操作符,則出棧兩個元素,根據操作符進行計算之後再壓棧 incl...