中綴表示式轉換為字首表示式的方法

2021-06-04 20:27:51 字數 882 閱讀 6515

1準備乙個棧來儲存 運算子

2從右至左開始獲取字元

2.1 如果當前的字元為數字,則直接輸出

2.2 如果當前的字元為運算子,但不是「)」 ,從運算子棧中取得棧頂的運算子,判斷當前的運算子的優先順序是否大於等於棧頂運算子的優先順序

a. 如果優先順序大於等於棧頂運算子的優先順序,則將此運算子入棧

b. 否則,對站內的運算子進行出棧,並輸出,直到當前的運算子優先順序大於等於棧頂運算子的優先順序

2.3 如果當前字元為「)」,直接入棧

2.4 如果當前字元為「(」,出棧並輸出,直到棧頂元素為「)」時,將「)」出棧。

3 一直迴圈2的操作

4直到掃瞄結束,將棧內所有的運算子出棧並輸出。

void mainfunction(string &str)

break;

case 1: // 當前字元是 運算子

if(operatorstack.empty())

else

else

else

}} while ( false == bret );

operatorstack.push(cgetch);}}

break;

case 2: // 當前字元是 運算元

// 如果是數字,直接輸出數字

outputnewexpression(null,igetfigure);

break;

case 3: //if current charactor is "(" or ")"

if ( cgetch == ')' )

else

}break;

default:

break;

} }}

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

考慮表示式a b c。a b c 是等價的字尾表示式。我們已經注意到,運算元 a,b 和 c 保持在它們的相對位置。只有操作符改變位置。再看中綴表示式中的運算子。從左到右出現的第乙個運算子為 然而,在字尾表示式中,在結束位置,因為下乙個運算子 的優先順序高於加法。原始表示式中的運算子的順序在生成的字...

將中綴表示式轉換為字首表示式

將中綴表示式轉換為字首表示式 遵循以下步驟 1 初始化兩個棧 運算子棧 s1和儲存中間結果的棧s2 2 從右至左掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與 s1棧頂運算子的優先順序 4 1 如果 s1為空,或棧頂運算子為右括號 則直接將此運算子入棧 4 2 否則,若優...

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

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...