0% menganggap dokumen ini bermanfaat (0 suara)
42 tayangan19 halaman

7 - Circular Queue Rev

Diunggah oleh

dinnypandie69
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
42 tayangan19 halaman

7 - Circular Queue Rev

Diunggah oleh

dinnypandie69
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 19

Circular

Queue
MK Struktur Data
Ellen Tantrisna, S.Kom, M.MSI

Antrian dapat dilakukan dengan 2
cara, yaitu : Linier Queue (data yang
bergerak ) dan Circular Queue
(Penanda yang bergerak ).

2
Circular Array

◎ Dengan circular array, meskipun


posisi terakhir telah terpakai, elemen
baru tetap dapat ditambahkan pada
posisi pertama jika posisi pertama
akhir=MAX-1
dalam keadaan kosong .
◎ Jika akhir=MAX -1 dan awal= 0, nilai
awal=0,
head dan tail mencapai maksimum,
maka akan dikembalikan ke posisi
awal .
◎ Operasi ‐operasi yang terdapat pada
circular array tidak jauh berbeda
dengan operasi pada linear array.

3
Pengingat !!!

◎ Elemen pertama kali masuk disebut elemen


depan (front/head of queue), yg terakhir
disebut elemen belakang (rear/tail of queue) .
◎ antrean dapat dibuat dengan array maupun
dengan struct .
◎ Pada pembuatan antrean dengan array ,
antrean yang disajikan bersifat statis , karena
jumlah maksimal array sudah ditentukan sejak
deklarasi awal .
CIRCULAR QUEUE
Ilustrasi Circular Queue
Circular Array

◎ Circular queue adalah jenis queue dengan karakteristik


model antrian yang kedua ujungnya terhubung.
◎ Diakses mulai dari sembarang indeks (indeks awal) kearah
indeks terakhir (maksimum array), memutar ke indeks
pertama hingga kembali ke indeks awal.
◎ Circular queue 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 ( n-1).
◎ 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 ke posisi awal.
◎ Queue dengan circular array dapat dibayangkan
sebagai berikut :
Aturan - aturan Circular Array
◎ Proses penghapusan dilakukan dengan cara nilai depan (front)
ditambah 1  depan = depan + 1.
◎ Proses penambahan elemen sama dengan linear array yaitu
nilai belakang ditambah 1  belakang = belakang + 1.
◎ Jika depan = maks-1 dan ada elemen yang akan dihapus,
maka nilai depan = 0.
◎ Jika belakang = maks dan depan tidak 0, maka jika ada
elemen yang akan ditambahkan ,nilai belakang=0
◎ Jika hanya tinggal 1 elemen di queue (depan = belakang) dan
akan dihapus, maka depan di isi -1 dan belakang di isi dengan
-1 (queue kosong).
Front dan T ail akan bergerak maju, jika :
◎ Untuk penambahan .
◉ Tail sudah mencapai elemen terakhir array akan
memakai elemen pertama array yang telah dihapus .
◎ Untuk penghapusan .
◉ Front telah mencapai elemen terakhir array, maka
akan menuju elemen pertama jika antrian masih
berisi elemen .
Proses Enqueue pada Queue Circular (Array Statis),
dengan cara:
◎ Penambahan data dilakukan jika kondisi queue tidak
penuh.
◎ Jika keadaan kosong, maka posisi Front dan Rear
bernilai 0.
◎ Tetapi jika tidak kosong, maka nilai Rear bertambah 1.
Tapi jika Rear ada di posisi maksimum queue (n-1)
dan Front bukan 0, maka Rear = 0
◎ Kemudian data baru disimpan di queue pada posisi
Rear.
Operasi dequeue pada Queue Circular (Array Statis),
dengan cara :
◎ Periksa apakah Queue kosong atau tidak?
◎ Periksa kembali apakah Queue berisi satu elemen
atau lebih?
◎ Jika berisi satu elemen, maka nilai Front dan rear
menjadi -1 (kosong)
◎ Jika berisi lebih dari satu elemen, maka periksa
apakah Front berada di posisi maksimum queue
atau tidak? jika ya maka nilai Front = 0, jika tidak
maka nilai Front bertambah 1.
◎ CQueue adalah tempat penyimpanan data.
◎ Rear mewakili lokasi di mana elemen data akan dimasukkan dan front
mewakili lokasi dimana elemen data akan dihapus.
◎ Elemen front ditugaskan ke Item.
◎ Awalnya, front = 0.

1. Jika front = -1 maka


Cetak: “kosong” dan kembali. /*..Hapus tanpa Penyisipan
2. Set Item: = CQueue [front]
3. Jika front = N-1 maka set front = 0 dan kembali.
4. Jika front = rear maka set front = -1 dan rear = -1 dan kembali.
5. Set front: = front + 1
6. Kembali.
Circular Queues Implementation using Arrays

15
Circular Queues Implementation using Arrays

16
Pemanfaatan Queue
Aplikasi queue/ antrian dapat digunakan
contohnya pada :
◎ P rogram pemesanan (reservasi hotel, tempat
makan, travel, dll)
◎ P rogram penjadwalan (waktu eksekusi sub-
program)
◎ P rogram penyaringan/ filter, misalkan pada
jaringan komputer untuk pembagian
bandwidth
◎ dll .
SUMBER PUSTAKA

• Guy J. Hall, Richard J. Easton, Applied Data Structure Using


Pascal, Toronto : D.C. Heat and Company, 1987
• Insap Santosa , I. 1993 . Struktur Data . Yogyakarta : Andy
Offset
• Hariyanto , B . 2004 . Struktur Data . Bandung : Informatika
• http ://www .cplusplus .com/doc/tutorial/
• Abdul Kadir . Algoritma & Pemrograman Menggunakan C &
C++. Yogyakarta . Andi
• Leony Lidya , Rinaldi Munir . Algoritma dan pemrograman
dalam Bahasa Pascal, C & C++. Bandung . Informatika
Thanks!

Any questions?
You can find me at : lms.citrabangsa.net
or [email protected]

Anda mungkin juga menyukai