Anda di halaman 1dari 12

Implementasi Queue

Tanpa pop dan append


Struktur Data – Sekolah Vokasi IPB
2021
Motivasi
• Tidak semua bahasa pemrograman memiliki built in function
(method) pop() dan append()
• Bagaimana implementasi queue tanpa pop() dan append()?
Ilustrasi pendekatan antrian
• Memetaforakan prosedur queue pada antrian tiket di dunia nyata

E D C B A • Arah antrian ke kanan. Ketika ada proses enqueue maka


objek baru akan diletakan pada posisi belakang. Ilustrasi
secara berurutan meng-enqueue A,B,C,D dan E
4 3 2 1 0 • Pada saat proses dequeue maka yang akan memperoleh
tiket dan keluar dari antrian adalah yang terdepan
(posisi yang berhadapan dengan petugas tiket) pada
kasus ini adalah objek A
E D C B • Akibat posisi petugas tiket (segitiga) yang tetap maka
untuk mengupdate posisi terdepan harus ditempuh
4 3 2 1 0 dengan menggeser seluruh objek sisanya ke kanan.
Secara berurutan B kekanan, lalu C ke kanan, D ke kanan,
dan seterusnya.
• Bayangkan jika pada queue saat itu ada sejuta benda.
Berapa banyak pergeseran yang harus dilakukan?
E D C B KURANG EFISIEN!

4 3 2 1 0
Pendekatan yang lebih efisien
• Posisi petugas tiket (terdepan) bersifat dinamis (berpindah)
Kondisi awal dequeue()  yang keluar A

E D C B A E D C B

4 3 2 1 0 4 3 2 1 0

E D C

4 3 2 1 0
dequeue()  yang keluar B
Pendekatan yang lebih efisien (ii)
• Posisi petugas tiket (terdepan) bersifat dinamis (berpindah), ketika ada enqueue
• Katakan kapasitas queue adalah hanya 5 tempat
Kondisi awal enqueue(‘F’)  F masuk di indeks 0 namun dinyatakan paling belakang

E D C E D C F

4 3 2 1 0 4 3 2 1 0

enqueue(‘G’)  G masuk di indeks 1 namun harus dinyatakan sebagai paling belakang

E D C G F

4 3 2 1 0
Pembacaan ilustrasi • Arah antrian ke kanan. Kapasitas maksimal queue pada
ilustrasi adalah 5 tempat dan pada baru terisi 4 objek
• Menyamakan pemahaman (gambar atas).
• Urutan posisi pada antrian adalah: C, D, E dan terakhir
adalah F
E D C F • Posisi terdepan adalah C, menempati posisi indeks 2
(disimbolkan dengan posisi segitiga yang dapat bergeser
4 3 2 1 0 ke arah kiri, ketika ada proses dequeue)
• Posisi paling belakang (warna merah), saat ini adalah ‘F’
(gambar atas). Ketika ada objek baru di enqueue maka
akan diletakan tepat di posisi indeks setelah belakang
ini, untuk kemudian si objek baru yang baru mengantri
akan bertindak sebagai posisi belakang terbaru (gambar
bawah).
• Pada gambar bawah queue penuh, posisi terdepan
adalah ‘C’ sedangkan posisi yang paling belakang adalah
E D C G F ‘G’
• Pendekatan ini lebih efisien dibandingkan ketika posisi
4 3 2 1 0 terdepan dibuat tetap. Pergeseran setiap ada operasi
dequeue hanya akan membutuhkan 1 langkah
menggeser posisi depan (segitiga) meskipun saat itu ada
sejuta objek dalam antrian 
Atribut Queue pada implementasi tanpa pop() dan append()

• size, current_size, data, front, back


• Khusus untuk atribut tambahan yaitu: front dan back
• front adalah atribut yang mencatat indeks posisi terdepan
• back adalah atribut yang mencatat indeks dari posisi paling belakang

Untuk Gambar ilustrasi di kiri kondisinya:


E D C F size = 5
current_size=4
4 3 2 1 0 data = [‘F’,None,’C’,’D’,’E’],
front = 2
back = 0
Definisi kelas Queue (init,isempty,isfull)
Method enqueue dan dequeue
Method info atribut queue
Contoh pemanggilan
Latihan
• Buatlah method visualisasi pada implementasi queue tanpa pop dan
append ini agar bisa menghasilkan visualisasi berikut:

Anda mungkin juga menyukai