QUEUE / ANTRIAN COPYRIGHT SECOND GROUP FROM 2A INFORMATION SYSTEM UNP KEDIRI @ 2013
Anggota kelompok :
Ajeng Kartika
( 12.1.03.03.033 12.1.03.03.0336 6)
Ami Prastyo Putra
( 12.1.03.03.0022 )
Irma Hidayati
( 12.1.03.03.005 12.1.03.03.0053 3)
Septianingrum Septianin grum
( 12.1.03.03.022 12.1.03.03.0224 4)
Vita Dwi Arianti
( 12.1.03.03.0273 )
Yudha Nur Reza
( 12.1.03.03.032 12.1.03.03.0320 0)
Materi yang akan dibahas : A.
What is Queue ??
B.
Kegunaan Queue
C.
Karakteristik Queue
D.
Queue Implementation
E.
Pendefinisian Queue
F.
Operasi – operasi operasi pada Queue
G.
Notasi Pada Queue
H.
Deklarasi
I.
Ilustrasi linier queue
J.
Ilustrasi circular queue
K.
Jenis-jenis Antrian
L.
Contoh Koding
M.
Soal
A. What is Queue ??
Queue / Antrian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada satu ujung dan penghapusan atau pengambilan elemen dilakukan lewat ujung lain.
Queue menggunakan prinsip Pertama Masuk Pertama Keluar – First In First Out (FIFO). Dengan kata lain urutan masuk sama dengan urutan keluar. Contoh yang paling populer untuk membayangkan sebuah queue adalah antrian pada kasir sebuah bank.
Ketika
seorang pelanggan datang, akan menuju ke belakang dari antrian. Setelah pelanggan dilayani, antrian yang berada di depan akan maju. Pada saat menempatkan elemen pada ujung (tail) dari queue disebut dengan enqueue, pada saat memindahkan elemen dari kepala (head) sebuah queue disebut dengan dequeue.
Lihat Gambar 5.1 berikut ini yang memperlihatkan sebuah queue serta proses enqueue dan dequeue.
Atau untuk lebih jelasnya mari simak video berikut
B. Kegunaan Queue Meski Queue sangat sederhana, namun Queue merupakan kakas dasar penyelesaian masalah-masalah besar. Penggunaan Queue yang utama adalah untuk simulasi fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data. Algoritma Queue juga digunakan dalam sistem operasi untuk mengontrol urutan proses operasi sistem.
Penggunaan Queue dapat dicontohkan seperti dibawah ini : 1.Simulasi antrian di dunia nyata, antara lain : Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop. Antrian mobil di depan gerbang jalan tol. Antrian kendaraan di jalanan umum. 2. System produksi Barisan bahan atau komponen yang akan diproses suatu mesin. Barisan bahan atau komponen yang akan diproses suatu manusia
C. Karakteristik Queue
Karakteristik penting dari antrian adalah :
1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian 2. Front (elemen terdepan dari antrian) 3. Rear (elemen terakhir dari antrian) 4. Jumlah elemen pada antrian (Count) 5. Status antrian
Kondisi antrian yang menjadi perhatian adalah :
1. Penuh Bila elemen pada antrian mencapai kapasitas maksimum antrian. Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan Overflow. 2. Kosong Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Overflow.
D. Queue Implementation 1.
Implementasi Queue dengan Linear Array
2.
Implementasi Queue dengan Circular Array
1. QUEUE DENGAN LINIEAR ARRAY
Linear array adalah suatu array yang dibuat seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar.
Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya
Sehingga membutuhkan variabel misalnya Head dan Tail
E. Pendefinisian Queue #define MAX 8 typedef struct{ int data[MAX]; int head; int tail; } Queue; Queue antrian;
F. Operasi – operasi pada Queue 1. Create()
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail = -1
2. Is Empty()
Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail
3. IsFull() Untuk mengecek apakah Antrian sudah penuh atau belum Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh • •
4. Enqueue(data) Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail •
•
5. Dequeue() • •
•
Digunakan untuk menghapus elemen terdepan/pertama dari Antrian Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan menggunakan looping
6. Clear() Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen elemen Antrian tidak lagi terbaca •
•
7. Tampil() Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail • •
2. Queue dengan Circular Array Salah satu variasi array adalah array melingkar (circular array), artinya array dapat diakses mulai dari sembarang indeks (indeks awal) kearah indeks terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali ke indeks awal. Circular array adalah array yang dibuat seakan-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, maka jumlah data yang dapat ditampung adalah 7.
G. Notasi Pada Queue 1. FRONT(Q) menunjukkan posisi terdepan dari suatu antrian. Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka FRONT(Q) = A. 2. REAR(Q) menunjukkan posisi terakhir dari suatu antrian. Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka REAR(Q) = E. 3. NOEL(Q) menunjukkan jumlah elemen di dalam Antrean Q. Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka NOEL(Q) = 5.
H. Deklarasi 1.
AWAL (Inisialisasi)
2. INSERT (Sisip, Masuk, Simpan, Tulis)
3. DELETE (Hapus, Keluar, Ambil atau Dilayani, Baca)
4. RESET (Kembali ke keadaan awal)
I. Ilustrasi linier queue
Dapat dilihat bahwa setiap terjadi penghapusan elemen pada queue nilai (index) dari Front bertambah satu (1) ; dapat ditulis FRONT = FRONT+1. Begitu pula bila terjadi penambahan elemen pada
queue
nilai
(index)
Rear
bertambah satu (1) ; dapat ditulis REAR = REAR + 1.
J. Ilustrasi circular queue
K. Jenis-jenis Antrian Selain antrian yang telah kita bahas di atas, masih ada dua tipe antrian lagi yang penggunaannya juga banyak di dalam kehidupan sehari hari atau dalam dunia komputer itu sendiri, diantaranya adalah : 1.
DEQUE
2.
ANTRIAN BERPRIORITAS
1. DEQUE DEQUE adalah antrian dimana elemennya bisa masuk dan keluar lewat kedua ujungnya (berbeda dengan queue yang hany bisa masuk lewat ujung belakang dan keluar lewat ujung depan). Biasanya DEQUE disajikan dengan menggunakan
Double
link
list yang memiliki
dua buah pointer
yang
menunjuk ke posisi sebelumnya dan sesudahnya ( posisi kiri dan kanannya ). Gambar 6.1 menunjukkan struktur umum dari sebuah DEQUE.
DEQUE juga mempunyai dua jenis variasi yaitu : a.
Deque input terbatas : suatu deque yang membatasi pemasukkan elemen hanya
pada satu ujung dari list, sementara penghapusan elemen boleh dilakukan pada kedua ujung list. b. Deque output terbatas : merupakan kebalikan dari deque input terbatas yaitu suatu deque yang membatasi penghapusan elemen hanya pada satu ujung dari list, sementara pemasukkan elemen boleh dilakukan pada kedua ujung lis t.
2. ANTRIAN BERPRIORITAS Antrian berprioritas adalah suatu queue yang setiap elemennya telah diberikan sebuah prioritas, dan urutan proses penghapusan elemen adalah berdasarkan aturan berikut : a. Elemen yang prioritasnya lebih tinggi, diproses
lebih dahulu dibandingkan dengan
elemen yang prioritas lebih rendah. b. Dua elemen dengan prioritas yang sama, diproses sesuai dengan urutan mereka sewaktu dimasukkan ke dalam priority queue. Salah satu contoh antrian berprioritas ini adalah sistem berbagi waktu (time sharing system), dimana program yang mempunyai prioritas tinggi akan dikerjakan lebih dahulu dan program-program yang berprioritas sama akan membentuk antrian yang biasa.
Contoh : Queue sederhana
M. Soal 1. Jelaskan apa yang dimaksud dengan: a. Queue/Tumpukan b. DEQUE c. Antrian berprioritas. 2. Jelaskan istilah-istilah pada queue berikut ini: a. Create b. Insert c. Remove d. Front e. Rear f. IsEmpty