棧的特性:後進先出(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...