Upload
trinhkhue
View
299
Download
2
Embed Size (px)
Citation preview
LOGO
Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving
Chapter Chapter 22:: Infix, Prefix & Postfix NotationInfix, Prefix & Postfix Notationออ..เสกสรรค มธุลาภรังสรรคเสกสรรค มธุลาภรังสรรค
สาขาวิชาวิศวกรรมคอมพิวเตอรสาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตรคณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตร
ContentsContents
Infix, Prefix, & PostfixInfix, Prefix, & Postfix1
Postfix Math CalculationPostfix Math Calculation2
Infix to Postfix TransformationInfix to Postfix Transformation3
Example Example I & III & II4
2
การใชสแตกชวยคํานวณนิพจนคณิตศาสตรการใชสแตกชวยคํานวณนิพจนคณิตศาสตร
การเขียนนิพจนคณิตศาสตรที่พบเห็นตามปกติจะอยูในรูปแบบที่มีตัวดําเนินการ(Operator) คั่นอยูระหวางตัวถูกดําเนินการ (Operand) เชน a+ba+bcc--dde*fe*fg/hg/h
นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ IInfixnfix NotationNotation
การเขียนในรูปแบบน้ีจะใหตัวดําเนินการมีตําแหนงอยูตรงกลางตรงกลางระหวางตัวถูกดําเนินการเสมอเราจึงเรียกนิพจนในรูปแบบน้ีวาเปนนิพจนแบบ IInfixnfix Notation Notation
การเขียนนิพจนคณิตศาสตรในรูปของ Infix Notation จําเปนตองใชเครื่องหมายวงเล็บวงเล็บเพ่ือกํากับลําดับขั้นการคํานวณหาคาของนิพจน
ตัวอยางเชน (A+B)*C และ A+(B*C) จะใหคาการประมวลผลแตกตางกัน หากตัดวงเล็บออกใหนิพจนเหลืออยูในรูป A+B*C คาจากการคํานวณ A+B*C ยอมเทากับ A+(B*C) เน่ืองจากเครื่องหมายคูณจะมีลําดับความสําคัญสูงกวาเครื่องหมายบวก
นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ PrefixPrefix NotationNotation
เปนนิพจนอีกรูปแบบหน่ึงที่จะมีตัวดําเนินการนําหนานําหนาตัวถูกดําเนินการ เชน +AB, -CD, *EF, /GH นิพจนในรูปแบบน้ีเรียกวา PolishPolish NotationNotation มีที่มาจากนักคณิตศาสตรชาวโปแลนด Jan Lukasiewicz อาจเรียกไดอีกช่ือหน่ึงตามตําแหนงการวางของตัวดําเนินการวา PrePrefixfix NotationNotation
ตัวอยางตอไปน้ีเปนการแปลงนิพจน Infix Notation ใหอยูในรูปของ Prefix Notation
(A+B)*C(A+B)*C
A+(B*C)A+(B*C)
(A+B)/(C(A+B)/(C--D)D)
(+AB)*C(+AB)*C
A+(*BC)A+(*BC)
(+AB)/((+AB)/(--CD)CD)
*+ABC*+ABC
+A*BC+A*BC
/+AB/+AB--CDCD
InfixInfix PrefixPrefixChange toChange to
นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ PrefixPrefix NotationNotation
คุณสมบัติที่สําคัญของ Prefix Notation คือลําดับขั้นของการคํานวณลําดับขั้นของการคํานวณจะบงบอกอยูในตัวของนิพจนเองตามตําแหนงการตามตําแหนงการวางวางของตัวดําเนินการและตัวถูกดําเนินการ
ดวยเหตุน้ีการเขียนนิพจนในรูปของ Prefix Notation จึงไมจําเปนตองใชวงเล็บไมจําเปนตองใชวงเล็บกํากับลําดับขั้นการคํานวณอีกตอไป
ตัวอยางตัวอยาง PPrefixrefix NotationNotation
A+BA+B
A+BA+B--CC
(A+B)*(C(A+B)*(C--D)D)
++--*^ABCD//EF+GH*^ABCD//EF+GH
^̂--*+ABC*+ABC--DE+FGDE+FG
--A/B*C^DEA/B*C^DE
+AB+AB
--+ABC+ABC
*+AB*+AB--CDCD
InfixInfix PrefixPrefix
A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)
((A+B)*C((A+B)*C--(D(D--E))^(F+G)E))^(F+G)
AA--B/(C*D^E)B/(C*D^E)
ตัวอยางตัวอยาง PPrefixrefix NotationNotation
A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)
((((A^B)*C)((((A^B)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
((((^AB)*C)((((^AB)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
(((*(^AB)C)(((*(^AB)C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
((((--(*^ABC)D)+((E/F)/(G+H)))(*^ABC)D)+((E/F)/(G+H)))
((((--*^ABCD)+((/EF)/(G+H)))*^ABCD)+((/EF)/(G+H)))
((((--*^ABCD)+((/EF)/(+GH)))*^ABCD)+((/EF)/(+GH)))
((((--*^ABCD)+(/(/EF)(+GH)))*^ABCD)+(/(/EF)(+GH)))
(+((+(--*^ABCD)(//EF+GH))*^ABCD)(//EF+GH))
(+(+--*^ABCD//EF+GH)*^ABCD//EF+GH)
++--*^ABCD//EF+GH*^ABCD//EF+GH
InfixInfix
PrefixPrefix
นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ Postfix NotationPostfix Notation
เปนนิพจนอีกรูปหน่ึงที่มีตําแหนงของตัวดําเนินการตรงกันขามกับ Prefix Notation คือตัวดําเนินการจะตัวดําเนินการจะวางอยูวางอยูหลังตัวถูกดําเนินการหลังตัวถูกดําเนินการ เชน AB+, CD-, EF*, GH/
นิพจนในรูปน้ีมีช่ือเรียกวา ReverseReverse PolishPolish Notation Notation หรือเรียกในอีกช่ือหน่ึงไดวา Postfix Notation Postfix Notation
มีคุณสมบัติเชนเดียวกับ Prefix Notation คือ ไมตองอาศัยวงเล็บกํากับลําดับขั้นไมตองอาศัยวงเล็บกํากับลําดับขั้นการคํานวณการคํานวณ
ตัวอยางตอไปน้ีเปนการเขียนนิพจน Infix Notation ใหอยูในรูปของ Postfix Notation
A/(B*(C+D))A/(B*(C+D))
(A(A--B)*(C+D)B)*(C+D)--EE
A+((BA+((B--C)*D)C)*D)
InfixInfix
A/(B*(CD+))A/(B*(CD+))
(AB(AB--)*(CD+))*(CD+)--EE
A+((BCA+((BC--)*D))*D)
A/(BCD+*)A/(BCD+*)
(AB(AB--CD+*)CD+*)--EE
A+(BCA+(BC--D*)D*)
ABCD+*/ABCD+*/
ABAB--CD+*ECD+*E--
ABCABC--D*+D*+
PostfixPostfixChange toChange to
ตัวอยางตัวอยาง PostPostfixfix NotationNotation
A+BA+B
A+BA+B--CC
(A+B)*(C(A+B)*(C--D)D)
AB^C*DAB^C*D--EF/GH+/+EF/GH+/+
AB+C*DEAB+C*DE----FG+^FG+^
ABCDE^*/ABCDE^*/--
AB+AB+
AB+CAB+C--
AB+CDAB+CD--**
InfixInfix PostfixPostfix
A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)
((A+B)*C((A+B)*C--(D(D--E))^(F+G)E))^(F+G)
AA--B/(C*D^E)B/(C*D^E)
ตัวอยางตัวอยาง PostfPostfixix NotationNotation
A^BA^B*C*C--D+ED+E/F/(/F/(G+HG+H))((((A^B)*C)((((A^B)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
((((AB^)*C)((((AB^)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
((((AB^)C*)((((AB^)C*)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))
(((AB^C*)D(((AB^C*)D--)+((E/F)/(G+H))))+((E/F)/(G+H)))
((AB^C*D((AB^C*D--)+((EF/)/(G+H))))+((EF/)/(G+H)))
((AB^C*D((AB^C*D--)+((EF/)/(GH+))))+((EF/)/(GH+)))
((AB^C*D((AB^C*D--)+((EF/)(GH+)/)))+((EF/)(GH+)/))
((AB^C*D((AB^C*D--)(EF/GH+/)+))(EF/GH+/)+)
(AB^C*D(AB^C*D--EF/GH+/+)EF/GH+/+)
AB^C*DAB^C*D--EF/GH+/+EF/GH+/+
InfixInfix
PostfixPostfix
LOGO
Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving Postfix Math Postfix Math CalculationCalculation
การคํานวณนิพจนคณิตศาสตรการคํานวณนิพจนคณิตศาสตร
การคํานวณนิพจนคณิตศาสตรที่เขียนอยูในรูป Infix NotationInfix Notation ดวยคอมพิวเตอรมักจะประกอบดวยขั้นตอนหลักสองขั้นตอนคือ 1) แปลงนิพจนใหอยูในรูปของ Postfix Notation Postfix Notation 2) คํานวณคานิพจนในรูป Postfix Notation Postfix Notation ขั้นตอนทั้งสองจะใชสแตกสแตกเปน
กลไกหลักสําคัญในการทํางาน
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
การคํานวณนิพจนคณิตศาสตรที่เขียนอยูในรูป PostPostfixfix Notation Notation จะใช สแตกชวยในการจัดการ โดยจะทําการตรวจสอบขอมูล เมื่อพบตัวถูกดําเนินการตัวถูกดําเนินการจะทําเก็บลงในสแตกทันที
แตถาพบตัวดําเนินการตัวดําเนินการจะนําขอมูลออกจากสแตกจํานวน 2 2 ชุดชุด หลังจากน้ันทําการคํานวณทางคณิตศาสตรตามตัวดําเนินการ ไดผลลัพธนําไปเก็บ
ไวในสแตก ทําเชนน้ีไปจนกวาจะหมดขอมูล นําขอมูลออกจากสแตกเปนผลลัพธจากการคํานวณ
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(66););
66
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(22););
2266
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(33););
332266
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
5566
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););
22 ++ 33
OperandOperand11 OperatorOperator OperandOperand22
55
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
11
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11--OperandOperand22););
66 -- 55
OperandOperand11 OperatorOperator OperandOperand22
11
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
3311
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(33););
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
883311
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(88););
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
22883311
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(22););
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
443311
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11/Operand/Operand22););
88 // 22
OperandOperand11 OperatorOperator OperandOperand22
44
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
7711
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););
33 ++ 44
OperandOperand11 OperatorOperator OperandOperand22
77
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
77
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11*Operand*Operand22););
11 ** 77
OperandOperand11 OperatorOperator OperandOperand22
77
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
2277
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(22););
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
4949
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11^Operand^Operand22););
77 ^̂ 22
OperandOperand11 OperatorOperator OperandOperand22
4949
OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
334949
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
Push(Push(33););
OperandOperand11 OperatorOperator OperandOperand22 OutputOutput
การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation
5252
6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++
OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););
4949 ++ 33
OperandOperand11 OperatorOperator OperandOperand22
5252
OutputOutput
LOGO
Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving Infix to Postfix TransformationInfix to Postfix Transformation
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
นิพจนในรูป Infix จําเปนตองอาศัยวงเล็บเพ่ือกํากับลําดับการคํานวณที่ตองการ แตถาในกรณีที่นิพจนน้ันไมมีวงเล็บกํากับลําดับขั้น เราจะใชหลัก 2 ประการในการคํานวณคือ1. กําหนดใหลําดับความสําคัญของตัวดําเนินการลําดับความสําคัญของตัวดําเนินการมีคาแตกตางกันไปตามลําดับดังน้ี อันดับหน่ึง : ตัวดําเนินการยกกําลัง (^) อันดับสอง : ตัวดําเนินการคูณและหาร (*,/) อันดับสาม : ตัวดําเนินการบวกและลบ (+,-)
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
2. หากตัวดําเนินการที่มลํีาดับความสําคัญลําดับความสําคัญเทากันเทากันปรากฏอยูพรอมกันใหหาคาหาคานิพจนนั้นจากซายไปขวานิพจนนั้นจากซายไปขวา ตัวอยางตอไปน้ีเปนการเขียนนิพจน Infix ในรูปที่มีวงเล็บกํากับลําดับการคํานวณที่ชัดเจนและนิพจน Postfix ที่สมนัยกัน
A+B*CA+B*C
A*B^CA*B^C--DD
A+B*CA+B*C--DD
InfixInfix
A*B/CA*B/C
AA--B+CB+C
A+(B*C)A+(B*C)
(A*(B^C))(A*(B^C))--DD
(A+(B*C))(A+(B*C))--DD
ParenthesisParenthesis
(A*B)/C(A*B)/C
(A(A--B)+CB)+C
ABC*+ABC*+
ABC^*DABC^*D--
ABC*+DABC*+D--
PostfixPostfix
AB*C/AB*C/
ABAB--C+C+
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
ในการแปลงนิพจน Infix ไปเปน Postfix จะใชการ ตรวจตรวจนิพจนจากซายไปนิพจนจากซายไปขวาขวา หากพบตัวถูกดําเนินการพบตัวถูกดําเนินการก็ใหสงตัวถูกดําเนินการน้ันไปเปนผลลัพธผลลัพธ แตถาตรวจพบตัวดําเนินการพบตัวดําเนินการก็จะตองเก็บพักตัวเก็บพักตัวดําเนินการนั้นไวกอน ดําเนินการนั้นไวกอน
เน่ืองจากยังจําเปนตองตรวจสอบตรวจสอบอีกวายังมีตัวดําเนินการอ่ืนตัวดําเนินการอ่ืนที่มีลําดับความสําคัญสูงกวาปรากฏอยูในนิพจนหรือไม
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
ระหวางการตรวจนิพจนเราจะใชสแตกสําหรับเก็บพักตัวดําเนินการ โดยอาศัยเงื่อนไขตอไปน้ี ให p แทนตัวดําเนินการปจจุบันที่ตรวจพบในนิพจน และ stack(top) คือตัว
ดําเนินการตัวบนสุดในสแตก หากพบวา p มีลําดับความสําคัญสูงกวา stack(top) ก็ใหผลัก P เก็บไวในสแตก
ไดทันที แตถาพบวา p มีลําดับความสําคัญต่ํากวา stack(top) ใหดึงตัวดําเนินการที่เก็บ
อยูในสแตกออกไปเปนผลลัพธทีละตัว ทําจนกระทั่ง stack(top) มีลําดับความสําคัญต่ํากวา P หรือจนกวาสแตกจะวาง
ตอจากน้ันจึงคอยผลัก P เก็บไวในสแตก แลวจึงดําเนินการกวาดตรวจนิพจนสวนที่เหลือตอไปจนหมด หลังจากน้ันดึงตัวดําเนินการที่เก็บอยูในสแตกออกใหหมด
LOGO
Example I Example I Infix to Infix to PostfixPostfix
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
A + B * CA + B * C
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
A + B * CA + B * C
AA
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
++
A + B * CA + B * C
AA
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
++
A + B * CA + B * C
ABAB
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
**++
A + B * CA + B * C
ABAB
Postfix Postfix OutputOutput
** มีลําดับสูงกวา มีลําดับสูงกวา ++
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
**++
A + B * CA + B * C
ABCABC
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
++
A + B * CA + B * C
ABC*ABC*
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
A + B * CA + B * C
ABC*+ABC*+
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน Postfix Postfix เเมื่อมีวงเล็บมื่อมีวงเล็บ
ระหวางการกวาดตรวจนิพจน ถา p ตัวดําเนินการปจจุบันทีต่รวจพบเปนวงเล็บเปดตรวจพบเปนวงเล็บเปดใหผลัก ผลัก pp เก็บไวในสแตกเก็บไวในสแตกทันที
แตถา p ตัวดําเนินการปจจุบันทีต่รวจพบเปนวงเล็บปดตรวจพบเปนวงเล็บปดใหดึงตัวดําเนินการท่ีเก็บดึงตัวดําเนินการท่ีเก็บอยูอยูในสแตกในสแตกออกไปเปนผลลัพธทีละตัวจนกระท่ังพบวงเล็บเปดออกไปเปนผลลัพธทีละตัวจนกระท่ังพบวงเล็บเปดจึงหยุดการดึงตัวดําเนินการจากสแตก
จะไมมีการผลัก ไมมีการผลัก pp ท่ีเปนวงเล็บปดเก็บไวในสแตก ท่ีเปนวงเล็บปดเก็บไวในสแตก แลวจึงดําเนินการกวาดตรวจนิพจนสวนที่เหลือตอไปจนหมด และดึงตัวดําเนินการที่เก็บอยูในสแตกออกใหหมด
LOGO
Example II Example II Prefix to PostfixPrefix to Postfix
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
( A + B ) * C( A + B ) * C
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
((
( A + B ) * C( A + B ) * C
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
((
( A + B ) * C( A + B ) * C
AA
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
++((
( A + B ) * C( A + B ) * C
AA
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
++((
( A + B ) * C( A + B ) * C
ABAB
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
( A + B ) * C( A + B ) * C
AB+AB+
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
**
( A + B ) * C( A + B ) * C
AB+AB+
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
**
( A + B ) * C( A + B ) * C
AB+CAB+C
Postfix Postfix OutputOutput
การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix
( A + B ) * C( A + B ) * C
AB+C*AB+C*
Postfix Postfix OutputOutput
LOGO