一、以下是一中序運算式(Infix expression)轉換(Convert)成後序運算式

内容查看

62d9ebfad3ba0.jpg

其中資料結構:
“operstk”:用來儲存運算子的堆疊(Stack) ;
“stacktop(operstk)”:表示 top 指標所指堆疊 operstk 的運算子;
程序(Procedures)或函數(Functions) :
“empty(operstk)”:檢查堆疊 operstk 是否為空的布林函數;
“pop(operstk)”:從堆疊 operstk 中取出一運算子;
“push(operstk, symb)”:將運算子 symb 存入堆疊 operstk;
“precedence(op1,op2)”:布林函數,定義在一沒有左右括弧的中序運算
式中,op1 運算子出現在 op2 運算子的左邊時,當 op1 運算子優先順序不
低於 op2 運算子,則設定成 TRUE,否則為 FALSE。例如,我們給定
precedence(‘*’, ‘+’)=TRUE , precedence(‘+’, ‘+’)=TRUE ,
precedence(‘+’, ‘*’)=FALSE,為了處理運算式左右括弧,設定下列
的 precedence:
precedence(‘(’, op) = FALSE /*op 為任一運算子*/
precedence(op, ‘(’) = FALSE /*op 為除’)’外的任一運算子*/
precedence(op, ‘)’) = TRUE /*op 為除’(’外的任一運算子*/
precedence(‘)’, op) = undefined /*op 為任一運算子*/
以中序運算式(2+3)*4 為例,執行上述演算法,依處理每一個運算子或運
算元時,輸出 postfix string 及 operstk 內容為何(“eos”表示 end of string)

62d9ec1ced6b3.jpg
其運算式(2+3)*4之中序轉後序追蹤如下-
Symbol
Postfix String
operstk
(
Empty
(
2
2
(
+
2
(+
3
23
(+
)
23+
Empty
*
23+
*
4
23+4
*
eos
23+4*
Empty
**這題只要細心的看,照著程式的步驟和題目給的提示一步一步做,都會得到相同答案**
点点赞赏,手留余香 给TA打赏

AI创作

0

評論0

支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
顯示驗證碼

社交帳號快速登錄