1. 程式人生 > >利用棧結構計算表示式串演算法

利用棧結構計算表示式串演算法

演算法思想:

  1. 將中綴表示式轉化為字尾表示式
  2. 順序的掃描字尾表示式中的每一個字元,並作如下操作:如果該字元為運算元,則將其壓入棧中;如果該字元為操作符<operator>,則連續從棧中彈出兩個運算元Y和X,並作運算操作X<operator>Y,並將計算結果壓入棧中。當整個表示式串掃描完畢,棧頂存放的就是表示式的結果。
  3. 其中步驟1的演算法思想如下:
  • 從左至右掃描中綴表示式,如果遇到運算元時直接加入到字尾表示式串中;否則遇到操作符時,1、若為左括號'(',直接入棧;2、若為右括號')',則依次將棧中的操作符加入到字尾表示式中,直到遇到'(',並且將'('出棧;3、若為其他操作符,當其優先順序高於棧頂操作符的優先順序時,直接將其入棧,否則從棧頂開始,依次彈出比當前操作符優先順序高或相等的操作符,直到遇到一個優先順序比它低的操作符或者遇到左括號'('。當整個中綴表示式掃描完畢時,將棧中剩餘的操作符依次彈出加入到字尾表示式中。