中綴轉字尾

2021-09-09 08:30:44 字數 899 閱讀 4952

棧的特性:後進先出(last in first out)-----》資料結構

中綴:+9.11 +(-3 - -1)* -5 ;

分離數字與運算子:+9.11 、+、( 、-3 、 - 、 -1 、)、* 、 -5 ;

字尾:+9.11 、-3 、 -1 、- 、-5 、* 、+ ;

中綴轉字尾過程:

當前元素為數字,輸出,作為字尾表示式的一部分;

如果當前運算子,比棧頂運算子優先順序低(小於等於)時,將棧頂元素輸出,作為字尾表示式的一部分;

。。。。           。。。。          。。。。。          大於時,將當前元素入棧 ,棧主要用來儲存中綴表示式的運算子

如果為左括號,入棧,棧用來儲存符號;

。。為右括號,將棧頂元素輸出,作為字尾表示式的一部分,直到棧頂元素為左括號,將其彈出不要了;

左括號與右括號就是在轉換過程中被丟棄。

bool qcalculatordec::transform(qqueue& exp, qqueue& output)

else if( isoperator(e) ) //為運算子

stack.push(e); //當前元素大於棧頂元素時,入棧

}else if( isleft(e) ) //左括號

else if( isright(e) ) //右括號

if( !stack.isempty() )

}else

}while( !stack.isempty() ) //棧作為資料結構來使用,有必要檢查:1.檢查棧不為空?

if( !ret ) //為安全性程式設計,如果轉換失敗,就要清空輸出佇列

return ret;

}

中綴轉字尾

include using namespace std define max 30 struct stack void initstack stack s char pop stack s void push stack s,char c char top stack s int copare ch...

中綴轉字尾(棧)

字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。假定待求值的字尾表示式為 6 5 2 3 8 3 則其求值過程如下 1 遍歷表示式,遇到的數字首先放入棧中,此時棧如下所示 2 接著讀到 則彈出3和2,執行3 2,計算結果等於5,並將5壓入到棧中。3 讀到8,將其直接放入棧中。4 讀到 彈...

中綴轉字尾及字尾求值

中綴表示式轉字尾表示式 include include include include include include includeusing namespace std const int maxn 1000 10 typedef char typename struct node typede...