You are on page 1of 28

ANTRIAN (QUEUE

)

Antrian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front).

Tumpukan menggunakan prinsip "masuk terakhir keluar pertama" atau LIFO (Last In First Out), maka pada antrian prinsip yang digunakan adalah "masuk pertama keluar pertama" atau FIFO (First In First Out). Dengan kata lain, urutan keluar elemen akan sama dengan urutan masuknya.

Antrian banyak kita jumpai dalam kehidupan sehari-hari. para calon mahasiswa yang mendaftarkan diri untuk ikut ujian SPMB akan membentuk antrian. Mobil-mobil yang antri membeli karcis di pintu jalan tol akan membentuk antrian. orang-orang yang membeli karcis untuk menyaksikan film akan membentuk antrian. dan contohcontoh lain yang banyak kita jumpai dalam kehidupdn sehari-hari. .

. maka jika prosesor sedang dipakai oleh seorang pemakai.Contoh lain yang lebih relevan dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak. pemakai-pemakai lain harus antri sampai gilirannya tiba. Karena sistem ini biasanya menggunakan sebuah prosesor dan sebuah pengingat utama.

tetapi didasarkan pass suatu prioritas tertentu.Antrian ini mungkin tidak akan dilayani secara FIFO murni. Antrian yang mengandung unsur prioritas dinamakan dengan antrian berprioritas (priority queue) .

Dengan demikian tipe data yang sesuai untuk menyajikan antrian adalah menggunakan larik dan senarai berantai. Contoh antrian dengan 6 elemen .IMPLEMENTASI ANTRIAN DENGAN LARIK Antrian sebenarnya juga merupakan satu kumpulan data. Gambar 1.

maka A akan dihapus lebih dahulu. Jika ada elemen yang akan dihapus.Gambar 1. yaitu A. Dengan demikian. maka ia akan diletakkan di sebelah kanan F (pada gambar di atas). . jika ada elemen baru yang akan masuk. Antrian di atas berisi 6 elemen. dan F. B. E. C. Menunjukkan contoh penyajian antrian menggunakan larik. D. Elemen A terletak di bagian depan antrian dan elemen F terletak di bagian belakang antrian.

b.Gambar 2.a. menunjukkan antrian Gambar 2. menunjukkan antrian di atas setelah berturut-turut dimasukkan G dan H.a. Gambar 2. Contoh penambahan dan penghapusan elemen pada suatu antrian . setelah elemen A dan B dihapus Gambar 2.

. Tentu saja tidak mungkin menghapus elemen dan suatu antrian yang sudah kosong. Tetapi untuk menghapus elemen. maka dalam antrian juga mengenal ada dua operasi dasar. Operasi penambahan elemen baru selalu bisa dilakukan karena tidak ada pembata'n banyaknya elemen dari suatu antrian. yaitu menambah elemen baru yang akan kita tempatkan di bagian belakang antrian dan menghapus elemen yang terletak di bagian depan antrian. Disamping itu seringkali juga perlu melihat apakah antrian mempunyai isi atau dalam keadaan kosong. maka kita harus melihat apakah antrian dalam keadaan kosong atau tidak.   Seperti halnya pada tumpukan.

Depan.Untuk menyajikan antrian menggunakan larik.Max_Elemen] of integer. type Antri = array[1. Dalam deklarasi di atas. misalnya. sebagai berikut: const Max_Elemen = 100. Perubah Depan menunjukkan posisi elemen pertama . elemen antrian dinyatakan dalam tipe integer. Belakang : integer. maka kita membutuhkan deklarasi antrian.. var Antrian : Antri.

yakni jika antrian telah penuh. bisa kita implementasikan dengan statemen: Belakang := Belakang + 1. Operasi penghapusannya bisa diimplementasikan dengan: X := Antrian[Depan]. yang dinyatakan oleh perubah x. Depan := Depan + 1. . maka kejadian overflow sangat mungkin. maka penambahan elemen baru. sementara kita masih ingin menambah terns. Dengan mengabaikan kemungkinan adanya overflow. Antrian[Belakang] := X.Dengan menggunakan larik.

a. Pada saat permulaan (Gambar 3. menunjukkan larik dengan 6 elemen untuk menyajikan sebuah antrian (dalam hal ini Max_Elemen = 6). antrian dalam keadaan kosong. Banyaknya elemen yang ada dalam antrian dinyatakan sebagai Belakang .Pada saat permulaan. Gambar 3.). dan antrian dikatakan kosong jika Belakang < Depan. . Sekarang marilah kita tinjau implementasi menambah dan menghapus elemen seperti diperlihatkan di atas.Depan + 1. Belakang dibuat sama dengan 0 dan Depan dibuat sama dengan 1.

d. Dalam hal ini nilai Depan 1 dan Belakang = 4. menjadi 7.3 + 1 = 4 elemen. Karena larik terdiri dari 6 elemen.Pada Gambar 3. . terdapat 4 buah elemen yang telah ditambahkan. Gambar 3. maka nilai Belakang harus ditambah satu. menambah elemen lagi.c.b. jika kita ingin menambah elemen baru. menunjukkan antrian setelah dua elemen dihapus. Gambar 3. Tetapi. maka sebenarnya kita masih bisa. menunjukkan antrian setelah dua elemen baru ditambahkan. Banyaknya elemen dalam antrian adalah 6 .

penyajian di atas tidak dapat diterima. . Bahkan dapat terjadi suatu situasi dimana sebenarnya antriannya dalam keadaan kosong. Dengan demikian. meskipun sebenarnya larik tersebut masih kosong di dua tempat.Padahal larik Antrian hanya terdiri dari 6 elemen. sehingga tidak mungkin ditambah lagi. tetapi tidak ada elemen yang bisa tambahkan kepadanya.

Gambar 3. Ilustrasi penambahan dan penghapusan elemen pada sebuah antrian .

Salah satu penyelesaiannya adalah dengan mengubah prosedur untuk menghapus elemen. maka sebenarnya perubah Depan ini tidak diperlukan lagi hanya perubah Belakang saja yang diperlukan. sedemikian rupa sehingga jika ada elemen yang dihapus. . make semua elemen lain digeser sehingga antrian selalu dimulai dari Depan = 1. karena nilai Depan selalu sama dengan 1. Dengan cara ini.

for x := 1 to Belakang . Belakang := Belakang .Berikut adalah rutin penggeserannya (dengan mengabaikan kemungkinan adanya under flow).1 do Antrian[I]:= Antrian[I+1]. X Antrian[1]. .1.

Ilustrasi penambahan dan penghapusan elemen pada sebuah antrian dengan penggeseran .Gambar 4.

Contoh umum dimana struktur pohon sering ditemukan adalah pada penyusunan silsilah keluarga. . Berikut ini diberikan suatu struktrur pohon yang digunakan pada silsilah keluarga dan bagan organisasi dari suatu perusahaan. hirarki suatu organisasi. daftar isi suatu buku. dan lain sebagainya.POHON (TREE) Materi Kuliah ini akan membahas tipe struktur data pohon atau tree.

dimana arah pohon yang ada menunjukan garis keturunan langsung . Siisilah ini berbentuk pohon.Contoh Gambar berikut ini menggambarkan silsilah keluarga leluhur dari Hardi.

Maju Terus yang dipimpin oleh seorang direktur yang dibantu oleh beberapa direktur. manager bagian dan supervisor. sampai dengan tingkat manajer.Contoh Selanjutnya diberikan struktur organisasi PT. Hierarki organisasi perusahaan .

dengan root sebagai puncaknya . sebuah pohon adalah struktur dari sekumpulan elemen. dengan salah satu elemennya merupakan akarnya atau root. dan sisanya yang lain merupakan bagian-bagian pohon yang terorganisasi dengan susunan berhirarki. Secara informal.

. Berikut ini adalah ilustrasi dan beberapa pohon biner yang mungkin terjadi. Pada penggambaran diatas . Pohon biner adalah pohon yang setiap simpulnya memiliki paling banyak dua buah cabang/anak. Pohon biner (2) memiliki cabang kiri kosong.Salah satu tipe pohon yang paling banyak dipelajari adalah pohon biner. pohon biner (2) dan (3) adalah berbeda. menurut definisi pohon terurut.

Proses yang dilakukan dalam mengunjugi simpul dapat hanya sekedar mencetak informasi yang ada pada simpul tersebut atau melakukan perhitungan matematika terhadap informasi yang tersimpan. Proses traversal hanya diperhatikan dari arah sebelah kiri.Traversal pohon biner adalah proses mengunjungi setiap simpul dari pohon secara sistematik masing-masing satu kali. . Pada setiap simpul yang dikunjungi dilakukan suatu proses pengolahan data yang tersimpan pada simpul tersebut.

Untuk itu proses traversal dapat dilakukan 3 cara : 1. Preorder ( SLR / Simpul Left Right ) 2. Inorder ( LSR / Left Simpul Right ) Selain itu ada proses kunjungan yang bekerja berdasarkan tingkat dari simpul yang dilalui. Traversal ini dinamakan Level Order . Postorder ( LRS / Left Right Simpul ) 3.

postorder.Contoh : Pohon berikut akan ditelusuri secara preorder. inorder dan level order Preorder Postorder Inorder Level Order :ABDECFI KJ :DEBKI J FCA :DBEAKI FJC :ABCDEFI JK .

Notasi ini jugs dapat digunakan untuk menuliskan ekspresi matematika dalam notasi prefix. postfix. Contoh : Ekspresi Matematika : (A x B + C ) /( D ^ E) Pohon Biner untuk ungkapan Matematika Maka traversal dari potion tsb akan mengahasilkan : Preorder atau prefix :/ + x A B C ^ DE Postorder atau postfix : A B x C + D E ^ / Inorder atau Infix :Ax B + C / D ^ E Level order : / + ^ x C D E A B . infix.

 . .

393.2.0 7/07 .30.019$25:#9 $0.7825:.078.3.3/. -07/.8.9/...:  %7.574808:3:3.3-007.3/3.39:.7./.

047/07 !7047/07 !48947/07 347/07 0.3/90:8:780..7.57047/07  548947/07 347/07/.4394!443-07:9.30..0 7/07     .

85701 31 54891 439485708.3:39:203:8./.902.5.9/:3..49.3085708 2.   .9.902.83:8/..2349.9.

.3203.9.8.078..../.9.97.3 !7047/07. ) !443307:39::3.75494398-.5.:5701. .3.902.

9.:54891 ). ) !48947/07.

:31 . 347/07.9.

047/07.) 0.

 ) .

.