Struktur Data

Nama Kelompok :

Kevin [14515011]

Yudi Amin [14510016]

Gilang Desnalendra P [14510013]

Ibnu Reza Fahmi [14510075]

Tantra Vidia Atanto [14510055]

Siti Nurjanah [14510018]

Universitas Gajayana Malang
2015
KATA PENGANTAR

Dengan mengucapkan puji syukur Alhamdulillah kepada Allah SWT, yang telah melimpahkan
segala rahmat dan hidayah-Nya, sehingga kami dapat mengerjakan Paper Struktur Data ini
dengan baik dan lancar. Kami berharap Paper ini dapat memberikan motivasi kepada para
mahasiswa-mahasiswi untuk lebih giat mempelajarinya.

Kami juga meminta maaf yang sebesar-besarnya apabila ada kekurangan, kesalahan bahkan
kata-kata yang tidak berkenan di hati dan disisi lain kami sangat mengharapkan ada
masukan baik kritik maupun saran dari saudara. Sehingga penyusun dapat memperbaiki apa
yang jadi kekurangan kami karena tidak ada manusia yang sempurna kecuali Allah SWT.

Akhir kata kami mengharapkan makalah ini banyak manfaatnya bagi saya sendiri khususnya
maupun semua pihak pada umumnya.

-1-
Daftar Isi

Kata Pengantar…………………….………………………………………………………………………………...1

Daftar Isi………………………………………………………………………………………………….2

a) Bab I Pendahuluan…………………………………………………………………………….3

1.1 Latar Belakang………………………………………………………………………….3

b) Bab ll Pembahasan…………………………………………………………………........4

2.1 Penjelasan………………………………………………………………………………4

2.2 Prefix……………………………………………………………………………………….4

2.3 Infix…………………………………………………………………………………………5

2.4 Postfix……………………………………………………………………………………5

2.5 Stack…………………………………………………………………………………………..6

c) Bab lll Penutup…………………………………………………………………….………10

-2-
Bab I Pendahuluan

Latar Belakang
Pada awalnya saat mempelajari tentang infix, prefix, dan postfix di mata kuliah Struktur

Diskrit, penulis merasa kesulitan. Hal tersebut dikarenakan selama ini penulis terbiasa

dengan penulisan ekspresi matematika infix dengan ditambah tanda bantu, sehingga

penulisan dengan postfix ataupun infix terasa sangat asing dan membingungkan, ditambah

lagi tanpa tanda bantu berupa kurung. Oleh karena itu, dengan ditulisnya makalah ini

penulis ingin menjelaskan metode atau cara mudah dalam mengkonversi ketiga bentuk

tersebut, sekaligus memahami perbedaan yang mendasari ketiganya. Karena sebagian besar

dari kita selama ini terbiasa dengan tanda bantu ‘( )’ dalam matematika, maka metode

tersebut yang penulis terapkan pada makalah ini, dengan harapan pembaca dapat lebih

mudah memahami dan mempelajarinya.

-3-
BAB II Pembahasan

Penjelasan

Dalam struktur data yang kita pelajari secara umum ada 3 notasi operasi yang
dilakukan untuk suatu operasi aritmatika,yaitu Prefix,Infix,dan postfix.Dan untuk
mengetahui notasi-notasi yang diatas itu,sebelumnya kita harus mengenal dan mengetahui
indikator yang ada di notasi itu tersebut, notasi ini terbentuk dari Operand dan Operator.
Operand adalah data atau nilai yang membantu dalam proses,sedangkan Operasi adalah
fungsi yang digunakan dalam proses.
contohnya:
-A+B*C
-2 + 5 * 3

Keterangan:
 A ,B ,C ,2 ,3 ,5 adalah Operand.
 +,* adalah Operator.

Setelah kita mengenal dan mengetahui dengan Operand dan Operator, maka mari
kita mengenal juga tingkat/ level yang ada didalam notasi tersebut:

 ( ) (Kurung).
 ^ (Pangkat).
 / (Perkalian / Pembagian).
 + - (Penjumlahan / Pengurangan).

Notasi ada 3 jenis, yaitu Prefix,Infix dan Postfix yang seperti kita ketahui di atas:

1. Prefix
Perfix adalah notasi yang terbentuk atas operator dengan operand, dimana oprator
didepan operand.

contoh: A + B * C (infix).
maka notasi prefixnya adalah: +A*BC.

Pemecahannya:

A+B*C

-4-
Diketahui ada 3 operand yaitu: A, B, C dan 2 operand yaitu: +, *.proses dimulai dengan
melihat dari hirarkhi oprator.Contoh diatas operator yang tertinggi adalah * kemudian +.
Tanda * diapit oleh 2 operand yaitu B*C, prefixnya dengan menggabungkan operand dan
memindahkan operator ke depan dari operand,sehingga fungsi B*C, notasi prefixnya
menjadi *BC.

Sehingga hasil sementara dari notasi prefix adalah:
A+*BC
Selanjutnya mencari prefix untuk operator yang berikutnya yaitu +, cara yang dilakukan
sama seperti diatas, operator + diapit oleh operand, yaitu A dan *BC, gabungkan
operand,sehingga menjadi A*BC,lalu pindahkan operator kedepan operand,sehingga hasil
akhir menjadi : +A*BC.

2. Infix
Infix adalah notasi yang membentuk atas operator dengan operand,dimana
operator berada diantara operand.
Contoh :
-A+B*C
- (A + B) * C
- A - (B + C) * D ^ E
3. Posfix
Postfix adalah notasi yang membentuk atas operator dengan operand,
dimana operator berada dibelakang operand.
Contoh : A + B * C ( infix).
maka notasi postfix adalah ABC*+.

Pemecahannya:

A+B*C
Diketahui ada 3 operand yaitu : A,B,C dan 2 operator yaitu : +, *. proses dimulai
dengan melihat dari hirarkhi operator.Contoh diatas operator yang tertinggi adalah *
kemudian +.

“ Tanda * diapit oleh kedua operand yaitu B dan C yaitu B*C, postfix dengan
menggabungkan operand B dan C menjadi BC,lalu memindahkan operator ke
belakang operand C, sehingga fungsi B*C, notasi postfixnya menjadi BC*.Sehingga
hasil sementara dari notasi postfix adalah A + BC* “
Selanjutnya mencari postfix untuk operator yang berikutnya, yaitu +, dengan cara
yang dilakukan sama seperti di atas, operator + diapit oleh 2 operand, yaitu : A dan
BC* gabungkan operand tersebut,sehingga menjadi ABC*,lalu pindahkan operator +
kebelakang operand ABC*.
Sehingga hasil akhir menjadi : ABC*+.
-5-
Contoh notasi huruf
INFIX PREFIX POSTFIX
(A+B) +AB AB+
((A+B)-C) -+ABC AB+C-
(A+(B-C)) +A-BC ABC-+
((A+B)*(C-D)) *+AB-CB AB+CD-*

Cara Stack

Stack adalah tumpukan (jadi, memori diibaratkan dengan tumpukan) yang memiliki cara
kerja, “yang pertama masuk ke kotak, maka akan terakhir kali diambil kembali” atau “first in
last out”, atau sebaliknya, “yang terakhir masuk ke kotak, akan diambil yang pertama kali,”
atau “last in first out.”

Berikut ini langkah-langkahnya:

1. Proses akan dilakukan dari kiri ke kanan
2. Bila yang diproses adalah operand, maka tulis di hasil. Di sini operand “A”:

A*(B+C)/D^E–F

Hasil = A
stack

3. Lanjutkan ke operator “*”, karena stack masih dalam keadaan kosong, maka masukkan
operator tersebut ke dalam stack;

A*(B+C)/D^E–F

Hasil = A
stack

4. Lanjutkan ke operator “(“, operator ini masukkan (tumpuk) saja ke dalam stack;
A*(B+C)/D^E–F

Hasil = A
Stack

-6-
5. Lanjutkan ke operand “B”, karena sebagai operand, maka “B” dijadikan hasil saja.

A*(B+C)/D^E–F

Hasil = A B
Stack

6. Lanjutkan ke operator “+”, operator ini masukkan (tumpuk) saja ke dalam stack;

A*(B+C)/D^E–F

Bila top stack (posisi teratas tumpukan) adalah “(“ maka apapun operator yang sedang
diproses, masukkan saja ke dalam stack.

Hasil = A B
Stack

7. Lanjutkan ke operand “C”, karena sebagai operand, maka “C” dijadikan hasil saja.

A*(B+C)/D^E–F

Hasil = A B C
Stack

8. Lanjutkan ke operator “)“, operator ini akan mengeluarkan seluruh isi stack (mulai dari
atas) hingga bertemu operator “(“ yang menjadi pasangannya. Karena di antara “(“ dan
“)” hanya ada “+” maka “+” saja yang dijadikan hasil. Tanda kurung dibuang saja.

A*(B+C)/D^E–F

Hasil = A B C +
Stack

-7-
9. Lanjutkan ke operator “/“, operator ini akan dimasukkan ke dalam stack. Karena di top
stack sudah ada isinya, maka bandingkan keduanya. Bila yang akan masuk memiliki
derajat yang lebih besar, maka tumpuk saja. Sebaliknya, bila yang akan masuk memiliki
derajat yang sama atau lebih kecil, maka keluarkan top stack hingga operator yang
berada di top stack berderajat lebih kecil dari operator yang akan masuk.

Karena “/” berderajat sama dengan “*” maka keluarkan top stack (“*”). Karena stack
sudah hampa, maka operator “/” dimasukkan ke dalam stack sebagai top stacknya.

A*(B+C)/D^E–F

Hasil = A B C + *
Stack

10. Lanjutkan ke operand “D”, karena sebagai operand, maka “D” dijadikan hasil saja.

A*(B+C)/D^E–F

Hasil = A B C + * D
Stack

11. Lanjutkan ke operator “^“, operator ini akan dimasukkan ke dalam stack. Karena di top
stack sudah ada isinya, maka bandingkan keduanya. Karena “^” berderajat lebih besar
dari top stacknya (“/”) maka masukkan (tumpuk) saja.

A*(B+C)/D^E–F

Hasil = A B C + * D
Stack

12. Lanjutkan ke operand “E”, karena sebagai operand, maka “E” dijadikan hasil saja.

A*(B+C)/D^E–F

Hasil = A B C + * D E
Stack

-8-
13. Lanjutkan ke operator “-“, operator ini akan dimasukkan ke dalam stack. Karena di top
stack sudah ada isinya, maka bandingkan keduanya. Karena “-“ berderajat lebih kecil dari
“^” maka operator “^” dikeluarkan dari tumpukan dan dijadikan hasil.
Ketika “-“ akan masuk, di top stack kini ada “/” yang berderajat lebih besar dari “-“,
akibatnya top stack (“/”) dikeluarkan juga dan dijadikan hasil. Kini “-“ menjadi top
stacknya.

A*(B+C)/D^E–F

Hasil = A B C + * D E ^ /
Stack

14. Lanjutkan ke operand “F”, karena sebagai operand, maka “F” dijadikan hasil saja.

A*(B+C)/D^E–F

Hasil = A B C + * D E ^ / F
Stack

15. Karena proses telah selesai, maka keluarkan seluruh isi stack mengikuti kaidahnya, last
in first out. Karena hanya ada “-“ maka hasil akhirnya menjadi:

ABC+*DE^/F–

Hasil ini harus sama dengan postfix yang menggunakan cara manual. Terlihat langkahnya
lebih panjang dari cara manual, namun jika telah terbiasa, cara ini dapat dilakukan dengan
lebih mudah dari pada cara manual. Kalau dipersingkat, bentuknya menjadi:

A * ( B + C ) / D ^ E - F ;

+ +
( ( ( ( ^ ^
* * * * * * / / / / - -
A B C + * D E^/F -

-9-
Bab lll Penutup

KESIMPULAN

Dari hasil perancangan dan pembuatan program ini dapat diambil
beberapa kesimpulan sebagai berikut :
1. Program Konversi ini dapat mengkonversi notasi prefix ke postfix, prefix
ke infix, infix ke prefix, infix ke postfix, postfix ke infix dan postfix ke
prefix.
2. Program Konversi ini bisa mengimplementasikan simulasi stack dalam
struktur data.
3. Jumlah operand harus lebih banyak 1 karakter daripada jumlah operator,
jika ada kelebihan atau kekurangan diantara keduanya, maka akan terjadi
kesalahan sehingga program tidak bisa dijalankan. Untuk input notasi
bisa menampung 255 karakter, jika lebih dari 255 karakter maka proses
konversi tidak bisa dijalankan, karena terjadi kelebihan data.

- 10 -