• Tidak ada hasil yang ditemukan

Makalah Struktur Data Queue

N/A
N/A
Protected

Academic year: 2021

Membagikan "Makalah Struktur Data Queue"

Copied!
13
0
0

Teks penuh

(1)

Makalah Struktur Data

Makalah Struktur Data

Tentang

Tentang

QUEUE (ANTRIAN)

QUEUE (ANTRIAN)

Disusun

Disusun Oleh Oleh : : 1. 1. MuhammMuhammad ad Aripin Aripin (12136758)(12136758)

2.

2. Adhi Adhi Arsiadi Arsiadi (12137105)(12137105)

3.

3. Panji Panji Pramono Pramono (12136802)(12136802) 4.

4. May May Lani Lani F.R F.R (12136785)(12136785) 5.

5. Evan Evan Wisik Wisik P P (12136784)(12136784)

BINA SARANA INFORMATIKA (BSI)

BINA SARANA INFORMATIKA (BSI)

PURWOKERTO

PURWOKERTO

2014

2014

(2)

BAB I

Pendahuluan

Latar Belakang masalah

Queue/antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan biasa disebut rear/tail , sedang ujung penghapusa disebut  front/head. Fenomena yang muncul adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil. Queue  berdisiplin FIFO (F ir st I n, F irst Out ).  Queue merupakan kasus khusus ordered list. Dengan karakteristik terbatas itu maka kita dapat melakukan optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.

Karakteristik Queue  memang terbatas, tetapi Queue  merupakan kakas dasar  penyelesaian masalah-masalah besar, seperti simulasi fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data. Beberapa fenomena dunia nyata berupa antrian diantaranya : antrian pembelian tiket di depan oket untuk bis, kereta api, bioskop; antrian mobil di depan gerbang jalan tol; antrian kendaraan di jalanan umum; dll.

(3)

BAB II

Pembahasan

Pengertian Queue

Queue merupakan kumpulan data dengan penambahan data hanya dapat dilakukan melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Queue bersifat FIFO(First In First Out), yaitu data yang pertama masuk akan keluar terlebih dahulu dan data yang terakhir masuk akan keluar terakhir.

Elemen yang pertama kali masukkedalam queue disebutelemendepan (front/head of queue), sedangkanelemen yang terakhir kali masukke queue disebutelemenbelakang (rear/tail of queue).

Aturan penambahan dan penghapusan elemen pada queue, yaitu pada  penambahan elemen selalu di lakukan melalui salah satu ujung, menempati  posisi di belakang elemen-elemen yang sudah masuks ebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan.

Operasi-operasi dasar dari sebuah queue adalah :1.Enqueue : proses  penambahanelemen di posisibelakang

2.Dequeue : proses pengambilanelemen di posisidepan

Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu :

(4)

1. CREATE (Q) Operator yang menunjukkan suatu antrean hampa Q.

Berarti : Noel (Q) = 0

Front (Q) & Rear (Q) = tidak terdefinisi

2. ISEMPTY (Q) Operator yang menunjukkan apakah antrean Q hampa.

Operand : tipe data antrean Hasil : tipe data boolean ISEMPTY (CREATE (Q)) = True

3. INSERT (E, Q) Operator yang menginsert elemen E ke dalam antrean Q.

E ditempatkan di bagian belakang antrean. Hasil : antrean yang lebih besar.

REAR (INSERT (E, Q)) = E

ISEMPTY (INSERT (E, Q)) = False

4. REMOVE (Q)Operator yang menghapus elemen bagian depan dari antrean Q.

Hasil : antrean yang lebih pendek.

Pada setiap operasi, Noel (Q) berkurang 1 dan elemen ke-2 menjadi elemen terdepan.

Jika Noel (Q) = 0 maka Q = hampa

Remove (Q) = kondisi error (underflow condition)

(5)

Jika ada elemen baru yang akan masuk pada gambar (a), maka ia akan diletakkan disebelah kanan F (gambar (b)). Jika ada elemen yang akan dihapus, maka A akan dihapus lebih dulu (gambar (c)).

Contoh deklarasi antrian :

Const max = 5

Varantrian : array [1..max] of char;

Belakang, depan : integer; x : char;

Dengan menggunakan array, maka overflow dapat terjadi jika antrian telah  penuh, sementara masih ingin menambah elemen kedalam antrian. Dengan

mengabaikan adany aoverflow, maka penambahan elemenbaru yang dinyatakanolehvar x dapat diimplementasikan denganstatemen :

(6)

 belakang := belakang + 1;

antrian [belakang] := x;

Operasi penghapusan bisadi implementasikan dengan ;

x := antrian [depan];

depan := depan + 1;

Padagambar (a) posisidepan = 1 danbelakang = 0. Padagambar (b) keadaan setelah penambahan empat buah elemen dimana posisi depan = 1 dan  belakang = 4. Pada gambar(c) keada ansetelah penghapusan duabuahel emen

dimanaposisidepan = 3 danbelakang =4. Padagambar (d) keadaansetelahpenambahanduabuahelemendiamanaposisidepan =3 danbelakang = 5.

Jika akan ditambah elemen baru, maka nilai belakang harus ditambah satu menjadi 6. Sedangkan larik antrian tersebut hanya terdiri dari 6 elemen sehingga tidak bias ditambah lagi meskipun sebenarnya larik tersebut masih kosong di dua tempat. Oleh karena itu dilakukan dengan metode penggeseran

(7)

dimana jika ada elemen yang dihapus, maka semua elemen lain digeser sehingga antrian selalu dimulai dari depan = 1.

x := antrian [1];

for i := 1 to belakang-1 do

 begin

antrian [ i] := antrian [i +1];

end;

Pada gambar (a) posisi depan = 1 dan belakang = 0. Pada gambar (b) keadaan setelah penambahan empat buah elemen di mana posisi depan = 1 dan  belakang = 4. Padagambar(c) keadaan setelah penghapusan dua buah elemen

dimana posisi depan = 1 dan belakang= 2. Pada gambar (d) keadaan setelah  penambahan dua buah elemen di mana posisi depan =1 dan belakang = 4.Cara  penggeseran elemen tidak efisien untuk larik berukuran besar.Oleh karena itu dilakukan dengan larik yang menyimpan elemen antrian sebagai larik memutar (circular).

(8)

 b. Dengan Menggunakan Circular Array

Salah satuvariasi array adalah array melingkar (circular array), artinya array dapat diakses mulai dari sembarang indeks (indeksawal) kearah indeks terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali ke indeks awal. Circular array adalah array yang dibuatseakan-akan merupakan sebuah lingkaran dengan titik awal dan titik akhir saling  bersebelahan jika array tersebut masih kosong.Jumlah data yang dapat ditampung oleh array ini adalah besarnya ukuran array dikurangi 1.Misalnya  besar array adalah 8, makajumlah data yang dapat ditampung adalah 7.

Dengan circular array, meskipun posisi terakhir telah terpakai, elemen baru tetap dapat ditambahkan pada posisi pertama jika posisi pertama dalam keadaan kosong.Jika nilai head dan tail mencapai maksimum, maka akan dikembalikan keposisiawal. Queue dengan circular array dapat dibayangkan sebagaiberikut :

Aturan-aturandalam queue yang menggunakan circular array adalah :

1. Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1 : depan = depan + 1.

2. Proses penambahan elemen sama dengan linear array yaitu nilai  belakang ditambah 1 : belakang = belakang + 1.

3. Jika depan = maka s dan ada elemen yang akan dihapus, maka nilai depan = 1.

4. Jika belakang = maks dan depan tidak 1 maka jika ada elemen yang akan ditambahkan ,nilai belakang=1

(9)

5. Jika hanya tinggal 1 elemen di queue (depan = belakang), dan akan dihapus maka depan di isi 0 dan belakang di isi dengan 0 (queue kosong).

Front dan Tail akanbergerakmaju, jika ;

1. Untuk penambahan.

2. Tail sudah mencapai elemen terakhir array akan memakai elemen  pertama array yang telah dihapus.

3. Untuk pengahapusan.

4. Front telah mencapai elemen terakhir array, maka akan menuju elemen  pertama jika antrian masih berisi elemen.

Keunggulan representasi circular adalah seluruh kapasitas antrian bisa terpakai seleruhnya.Berdasarkan ilustrasi sebelumnya dapat disusun prosedur untuk menambah dan menghapus elemen antrian sebagai berikut ini :

Constmax_elemen = 5;

Type antri = array [1..max_elemen] of char;

Varantrian :antri;

depan, belakang : integer;

(10)

Depan := 0; Belakang := 0;

Proses dequeue hanya bisa dilakukan jika queue dalam keadaan tidak kosong.Ada beberapa kondisi yang harus diperhatikan ketika dequeue elemen queue yaitu :

 Kondisi ketika posisi depan sama dengan posisi belakang (queue hanya

memiliki 1elemen) maka nilai depan dan belakang di isi dengan 0 (queue kosong).

 Jika posisi depan sama dengan posisi maks_queue maka posisi depan

 berpindah ke 1.

 Selain itu, posisi depan ditambah dengan 1 : depan = depan + 1

Impelementasinya dalam bahasa Pascal adalah :

function dequeue (var q : antri) : char;

 begin

if (depan=0) and 9belakang=0) then then

write (‘ antriankososng’);

else

 begin

dequeue := q [depan];

ifdepan = max_elemen then

(11)

else

depan := depan + 1;

end;

end;

DEQUE (Queue Ganda atau Double Queue)

Suatu linear list, yang penambahan dan penghapusan elemen dapatdilakukan  pada kedua sisi ujung list, tetapi tidak dapat dilakukanditengah-tengah list.

Deque (menggunakan array sirkular)Menggunakan 2 pointer/penunjuk :

1. LEFT : sisi kiri dari deque

2. RIGHT : sisi kanan dari deque

Asumsi : elemen deque berurut dari kiri ke kanan.

Contoh : Menggambarkan 2 buah deque, masing-masing berisi 4elemen, yang ditempatkan di dalam sebuah Array dengan 8 lokasimemori

(12)

2 variasi deque, yaitu :

1. Deque Input Terbatas : Pemasukan elemen pada satu ujung list,  penghapusan elemen pada kedua ujung list.

2. Deque Output Terbatas : Pemasukan elemen pada kedua ujung list,  penghapusan elemen pada salah satu ujung list.

Antrean Berprioritas

Himpunan elemen, yang setiap elemennya telah diberikan sebuah prioritas, dan urutan proses penghapusan elemen adalah berdasarkan aturan berikut :

1. Elemen yang prioritasnyalebihtinggi, diproses lebih dahulu dibandingkan dengan elemen yang prioritasnya lebih rendah.

2. Dua elemen dengan prioritas yang sama, diprosesse suai dengan urutannya sewaktu dimasukkan kedalam antrean berprioritas.

(13)

BAB III

Penutup

Kesimpulan

1. Antrian (queue) adalah sebuah bentuk struktur yang berdasarkan pada  proses FIFO (First In First Out)

2. Contoh Antrian (queue) bisa kita temukan di kehidupan sehari -hari seperti antrian masuk jalan tol dan loket antrian.

3. Pengoperasian Antrian (qeue) berbagai macam seperti, Create, Enque, Deque, IsEmpty, IsFull, Tampil, Clear, dsb.

4. Antrian dapat diimplementasikan dengan menggunakan array atau linked list

Dengan pemahaman di atas, kita dapat memahami pengertian, penggunaan,  pengoprasian serta implementasi dari struktur data Antrian (queue). Kita pun bisa

Referensi

Dokumen terkait

- List dengan elemen fiktif (dummy element) pada elemen pertama. - List dengan elemen fiktif (dummy element) pada

Akan terjadi ketidakefisienan bila penambahan elemen sudah pada posisi index N (Rear = N) maka tidak dapat lagi dilakukan penambahan elemen, sedangkan dilokasi memori yang lain

Deklarasikan Stack dalam bentuk Record dimana didalamnya mengandung data dalam bentuk array dan suatu variabel inisialisasi untuk memantau posisi terakhir dari data yang ada

Fungsi ini berguna ketika proses dequeue yaitu ketika sebuah elemen akan diambil, maka harus diperiksa dulu apakah memiliki data atau tidak.. Fungsi ini akan mempunyai

Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama.. Elemen-elemen array tersusun secara sekuensial dalam

 Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data

Sebuah elemen dialokasi dan menjadi elemen pertama list L, jika alokasi berhasil. Jika alokasi gagal list tetap

/*PENGHAPUSAN SEBUAH ELEMEN*/ void DelFirst(List *L, address *P); /*P adalah alamat elemen pertama list sebelum penghapusan*/ /*elemen list berkurang satu, firstelemen baru