中綴表示式轉為字尾表示式 棧

2021-07-10 10:58:38 字數 906 閱讀 5589

題目:給乙個中綴表示式(即標準形式的表示式),列印該表示式的字尾表示式。中綴表示式最大的不同就是去掉了表示運算子優先順序的括號。運算元為26個小寫或大寫的英文本母(注意不包括數字和其他字元),操作符為+,-,*,/,(,),^,=,一共八個。具體見例子見下圖 :

**如下:

#include 

#include

#include

using

namespace

std;

/* 判斷字元ch是否是乙個運算元 */

bool isoperand(char ch)

/* 返回運算元的等級 */

int getrange(char oper)

//凡是進棧的都要有等級

}/* 把中綴轉化為字尾並輸出 */

void infixtopostfix(string str)

cout

<< str[i];

}else

if (isoperand(str[i]))

cout

<< str[i];

else

s.push(str[i]);

}else

if (str[i] == ')')

s.pop();//刪掉'('

}else

s.push(str[i]);

}}//for (int i = 0; i < len; i++)

while (s.top() != '#')

cout

<< endl;

}int main()

資料測試在上圖。

中綴表示式轉為字尾表示式

設以 字元作為結束符的中綴算術表示式已經儲存在s1字串中,轉換後得到的字尾算術表示式擬存於s2字串中。由中綴表示式轉換為字尾表示式的規則可知 轉換前後,表示式中的數值項的次序不變,而運算子的次序發生了變化,由處在兩個運算物件的中間變為處在兩個運算物件的後面,同時去掉了所有的括號。為了使轉換正確,必須...

中綴表示式轉為字尾表示式

定義 中綴表示式是乙個通用的算術或邏輯公式表示方法,操作符是以中綴形式處於運算元的中間 例 3 4 中綴表示式是人們常用的算術表示方法。字尾表示式,又稱逆波蘭式,指的是不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則 規則轉換過程需要...

中綴表示式轉為字尾表示式

把中綴表示式轉換為字尾表示式。基本思路是。每乙個符號最開始都是懸而未決的。是否簡單的把符號放到左右數字的後面,都是由後面的符號決定。所以先插入第乙個符號。後面拿到的符號必須和之前的符號 棧頂 比較,棧頂和新符號平級或者棧頂更優先,那麼棧頂符號插入字尾表示式。public static void ma...