Notasi Postfix dan Prefix menggunakan Stack

1. A+B*C/D

a. Rubah menjadi Postfix : ABC*D/+ :

 

Stack

Input

Output

Keterangan

Kosong

A+B*C/D

 

 

Kosong

+B*C/D

A

 

+

B*C/D

A

 

+

*C/D

AB

 

+*

C/D

AB

Derajat * > +, maka ditumpuk

+*

/D

ABC

 

+/

D

ABC*

Derajat / = *, maka * dikeluarkan

+/

Selesai

ABC*D

 

Kosong

 

ABC*D/+

Stack dikeluarkan

 

b. Rubah menjadi Prefix : +A*B/CD

1) Membalikkan ekspresi infix : D/C*B+A

2) Jadikan Setiap '(' sebagai ')' dan setiap ')' sebagai '(' : tidak ada

3) Menggunakan bentuk postfix

 

Stack

Ekspresi

Output

Keterangan

Kosong

D/C*B+A

 

 

Kosong

/C*B+A

D

 

/

C*B+A

D

 

/

*B+A

DC

 

*

B+A

DC/

Derajat / = *, maka / dikeluarkan

*

+A

DC/B

 

+

A

DC/B*

Derajat + < *, maka * dikeluarkan

+

Selesai

DC/B*A

 

Kosong

 

DC/B*A+

Stack dikeluarkan

 

4) Membalikkan output : +A*B/CD

 

 

 

2. 2(C+D)/E

a. Rubah menjadi Postfix : 2CD+E/

 

Stack

Input

Output

Keterangan

Kosong

2(C+D)/E

 

 

Kosong

(C+D)/E

2

 

(

C+D)/E

2

 

(

+D)/E

2C

 

(+

D)/E

2C

 

(+

)/E

2CD

 

Kosong

/E

2CD+

Karena operator ), maka +  dikeluarkan

/

E

2CD+

 

/

Selesai

2CD+E

 

Kosong

 

2CD+E/

Stack  dikeluarkan

 

 

 

 

 

 

b. Rubah menjadi Prefix : /2+CDE

1) Membalikkan ekspresi infix : E/)D+C(2

2) Jadikan Setiap '(' sebagai ')' dan setiap ')' sebagai '(' : E/(D+C)2

3) Menggunakan bentuk postfix

 

Stack

Ekspresi

Output

Keterangan

Kosong

E/(D+C)2

 

 

Kosong

/(D+C)2

E

 

/

(D+C)2

E

 

/(

D+C)2

E

 

/(

+C)2

ED

 

/(+

C)2

ED

 

/(+

)2

EDC

 

/

2

EDC+

Karena operator ), maka +  dikeluarkan

/

Selesai

EDC+2

 

Kosong

 

EDC+2/

Stack dikeluarkan

 

4) Membalikkan output : /2+CDE

 

 

3. (1+2)*3/6

a. Rubah menjadi Postfix : 12+3*6/

 

Stack

Input

Output

Keterangan

Kosong

(1+2)*3/6

 

 

(

1+2)*3/6

 

 

(

+2)*3/6

1

 

(+

2)*3/6

1

 

(+

)*3/6

12

 

Kosong

*3/6

12+

Karena operator ), maka +  dikeluarkan

*

3/6

12+

 

*

/6

12+3

 

/

6

12+3

Derajat / = *, maka * dikeluarkan

/

Selesai

12+3*6

Stack dikeluarkan

Kosong

 

12+3*6/

 

 

b. Rubah menjadi Prefix : *+12/36

1) Membalikkan ekspresi infix : 6/3*)2+1(

2) Jadikan Setiap '(' sebagai ')' dan setiap ')' sebagai '(' : 6/3*(2+1)

3) Menggunakan bentuk postfix

 

Stack

Ekspresi

Output

Keterangan

Kosong

6/3*(2+1)

 

 

Kosong

/3*(2+1)

6

 

/

3*(2+1)

6

 

/

*(2+1)

63

 

*

(2+1)

63/

Derajat / = *, maka / dikeluarkan

*(

2+1)

63/

 

*(

+1)

63/2

 

*(+

1)

63/2

 

*(+

)

63/21

 

*

Selesai

63/21+

Karena operator ), maka +  dikeluarkan

Kosong

 

63/21+*

Stack dikeluarkan

 

4) Membalikkan output : *+12/36

 

  

4. (3+4)/(A+B)*C

a. Rubah menjadi Postfix : 34+AB+/C*

 

Stack

Input

Output

Keterangan

Kosong

(3+4)/(A+B)*C

 

 

(

3+4)/(A+B)*C

 

 

(

+4)/(A+B)*C

3

 

(+

4)/(A+B)*C

3

 

(+

)/(A+B)*C

34

 

Kosong

/(A+B)*C

34+

Karena operator ), maka +  dikeluarkan

/

(A+B)*C

34+

 

/(

A+B)*C

34+

 

/(

+B)*C

34+A

 

/(+

B)*C

34+A

 

/(+

)*C

34+AB

 

/

*C

34+AB+

Karena operator ), maka +  dikeluarkan

*

C

34+AB+/

Derajat / = *, maka / dikeluarkan

*

Selesai

34+AB+/C

 

Kosong

 

34+AB+/C*

Stack dikeluarkan

 

 

b. Rubah menjadi Prefix : /+34*+ABC

1) Membalikkan ekspresi infix : C*)B+A(/)4+3(

2) Jadikan Setiap '(' sebagai ')' dan setiap ')' sebagai '(' : C*(B+A)/(4+3)

3) Menggunakan bentuk postfix

 

Stack

Ekspresi

Output

Keterangan

 

C*(B+A)/(4+3)

 

 

 

*(B+A)/(4+3)

C

 

*

(B+A)/(4+3)

C

 

*(

B+A)/(4+3)

C

 

*(

+A)/(4+3)

CB

 

*(+

A)/(4+3)

CB

 

*(+

)/(4+3)

CBA

 

*

/(4+3)

CBA+

Karena operator ), maka +  dikeluarkan

/

(4+2)

CBA+*

 

/(

4+2)

CBA+*

 

/(

+2)

CBA+*4

 

/(+

2)

CBA+*4

 

/(+

)

CBA+*43

 

/

Selesai

CBA+*43+

Karena operator ), maka +  dikeluarkan

Kosong

 

CBA+*43+/

Stack dikeluarkan

 

4) Membalikkan output : /+34*+ABC

 

No comments:

Post a Comment

Tugas VClass Softskill Pertemuan 3