(一):中綴表示式轉字尾表示式
從左到右處理各個元素
1.遇到運算元。直接加入字尾表示式
2.遇到界限符。遇到'('直接入棧,遇到')'則依次彈出棧內運算子並加入字尾表示式,直到彈出'('為止。注意:'('不加入字尾表示式。
3.遇到運算子。依次彈出棧中優先順序高於或等於當前運算子的所有運算子,並加入字尾表示式,若碰到'('或棧空則停止。之後再把當前運算子入棧
(二):字尾表示式的計算過程
1.從左往右掃瞄下乙個元素,直到處理完所有元素
2.若處理到運算元則壓入棧並返回1;否則執行3
3.若掃瞄到運算子,則彈出兩個棧頂元素,執行相應的運算並把結果壓回棧頂,回到1
(三)中綴表示式的計算
1.初始化兩個棧:運算元棧和運算子棧
2.若掃瞄到運算元,壓入運算元棧
3.若掃瞄到運算子或界限符,則按照「中綴轉字尾」相同的邏輯壓入運算子符棧
(期間也會彈出運算子,每當彈出乙個運算子就需要再彈出兩個運算元棧的棧頂元素並執行相應運算,運算結果再壓回運算元棧)
棧在表示式求值中的應用
中綴表示式轉字尾表示式 初始化乙個棧,用來儲存暫還不能確定運算順序的運算子 從左到右處理各個元素,直到末尾。可能遇到三種情況 遇到運算子 依次彈出棧中優先順序高於或等於當前運算子的所有運算子,並加入字尾表示式,若碰到 或棧空則停止。之後再把當前運算子入棧 按上述方法處理完所有字元後,將棧中剩餘運算子...
棧應用 表示式求值
include stdafx.h include using namespace std const int explenght 20 const int stack init size 20 const int stack incrment 10 templateclass stack stack...
棧應用 表示式求值
include include define length 100 初始分配棧的長度 define add len 10 棧長增量 typedef struct 定義字元棧 sqstack void initstack sqstack s 初始化乙個棧 void push sqstack s,int...