Anda di halaman 1dari 10

TUGAS III

Nama : Muhammad Aqsa Ramadhan

NIM : H071201074

Struktur Data ( Circular and Priority Queue )

Queue bisa disebut juga antrian pada struktur data. Pengertian queue adalah sekumpulan
data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung yang disebut
sisi belakang (rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain.
Contoh queue paling sederhana dapat dilihat pada antrian. Prinsip kerja dari queue adalah
prinsip “First In First Out” (FIFO) atau “masuk pertama keluar pertama”. Sedangkan
prinsip “masuk terakhir keluar pertama” atau “Last In First Out” (LIFO), digunakan pada
tumpukan atau stack. ada queue terdapat satu pintu masuk di salah satu ujung dan satu pintu
keluar di ujung lainnya. Maka ada penunjuk yang menunjukkan awal dan akhir.

Operasi penting dalam queue :

1. Add yang berfungsi menambah sebuah elemen ke dalam antrian


2. Delete yang berfungsi menghapus atau mengeluarkan elemen dari antrian

Di dalam sebuah antrian (queue), terdapat sebuah operasi bernama add_priority. Dalam hal
ini, antrian tidak lagi menerapkan konsep antrian yang murni, namun berubah menjadi
antrian dengan prioritas. Dimana terdapat prioritas tertentu pada elemen, dan elemen yang
baru ditambah tidak mesti berada di akhir.

Operasi Circular Queue :

Circular Queue berkerja sebagai berikut .

• Ada dua pointer yaitu front dan rear.


• Front melacak elemen pertama dari antrian.
• Rear melacak elemen terakhir dari antrian.
• Inisialisasi front dan rear dengan mengatur nilainya ke -1

public class CQueue {


int SIZE = 5; // Size of Circular Queue
int front, rear;
int items[] = new int[SIZE];
CQueue() {
front = -1;
rear = -1;

1. Operasi Enqueue
Digunakan untuk penambahan elemen ke dalam antrian, penambahan elemen
selalu ditambahkan di elemen paling belakang. Penambahan elemen selalu
menggerakan variabel Rear dengan cara increment counter Rear terlebih dahulu.

Pertama, setelah membuat class kita membuat method isFull untuk mengecek
apakah antrian tersebut penuh atau tidak.
Program :

Setelah itu, untuk elemen pertama, set nilai dari front ke 0, secara melingkar
meningkatkan indeks Rear sebesar 1 (yaitu jika bagian belakang mencapai akhir,
selanjutnya akan berada di awal antrian). tambahkan elemen baru di posisi yang
ditunjukkan oleh REAR.
Program :
Contoh antrian :
Antrian Kosong/ Empty Queue
Saat Antrian masih kosong front dan rearnya belum akan berpindah dan masih
akan terletak pada index pertama yaitu -1
Front/Rear Front/Rear
Index -1 0 1 2 3 4
Queue

Menambahkan antrian dengan elemen pertama ketika antrian masih kosong


Saat pertama menambahkan elemen, front dan rear akan berpindah secara
bersamaan ke index-2 yaitu 0. Saat itulah 0 akan menjadi front antrian dan juga
rearnya.
Front/rear Front/rear
Index -1 0 1 2 3 4
queue 1

Menambahkan antrian dengan elemen dengan antrian yang sudah terisi beberapa
element. Saat menambahkan elemen dimana antrian sudah memiliki beberapa
elemen elemen yang pertama akan tetap menjadi front dan element yang berada
pada index yang terisi dan paling belakang akan menjadi rear

Front/rear front rear


Index -1 0 1 2 3 4
queue 1 2 3

2. Operasi Dequeue
Dipakai untuk menghapus elemen terdepan (front) dari queue dengan cara
menggeser semua elemen antrian ke bagian depan dan mengurangi rear dengan 1
penggeseran yang dilakukan dengan menggunakan pengulangan.

Pertama kita harus mengecek apakah antrian kosong atau tidak, dengan
menggunakan method isEmpty.
Ketika sebuah antrian kosong nilai akan kembali ke -1 dan kita tambahkan
keterangan “Queue is Empty”, jika tidak barulah kita menghapus sebuah nilai
dalam antrian dengan menghapus elemen terdepan yaitu front. kembalikan nilai
yang ditunjukkan oleh FRONT. meningkatkan indeks FRONT secara sirkuler
sebesar 1 atau elemen terakhir, setel ulang nilai FRONT dan REAR ke -1
Program :

Contoh antrian :
Front/rear front rear
index -1 0 1 2 3 4
queue 1 2 3 4 5

Di atas adalah sebuah antrian yang berisi 5 antrian saat kita melakun proses
dequeue antrian yang menjadi front yaitu pada index 0 akan terhapus dan yang
akan menjadi front adalah index 1 seperti dibawah ini.
Font/rear front rear
Index -1 0 1 2 3 4
queue 2 3 4 5

Operasi Priority Queque

Priority Queue adalah jenis antrian khusus di mana setiap elemen dikaitkan dengan nilai
prioritas. Dan, elemen disajikan berdasarkan prioritasnya. Artinya, elemen prioritas yang
lebih tinggi dilayani terlebih dahulu. Namun, jika elemen dengan prioritas yang sama
terjadi, mereka dilayani sesuai dengan urutannya dalam antrian.

Menetapkan Nilai Prioritas

Umumnya, nilai elemen itu sendiri dipertimbangkan untuk menetapkan prioritas. Sebagai
contoh, Elemen dengan nilai tertinggi dianggap elemen prioritas tertinggi. Namun, dalam
kasus lain, kita dapat menganggap elemen dengan nilai terendah sebagai elemen prioritas
tertinggi.

Priority Queue berkerja sebagai berikut .

1. Memasukan sebuah elemen ke Priority Queue


• Masukan elemen baru pada akhir queue
• Kemudian heapify-kan queue setelah elemen di masukkan

2. Menghapus elemen dari Priority Queue


• Pilih elemen yang mana yang akan di hapus

• Kemudian tukar elemen yang akan di hapus dengan elemen terakhir

• Kemudian hapus elemen terakhir


• Kemudian heapify-kan lagi queue nya

3. Melihat dari Priority Queue(Mencari min/max)


Untuk melihat, maka harus mengembalikan elemen maksimum dari max-heap atau
elemen minimum dari min-heap tanpa menghapus node.
4. Ekstrak Maks/Min dari Priority Queue
Ekstrak Maksimum mengembalikan node dengan nilai maksimum setelah
menghapusnya dari Max Heap sedangkan Ekstrak Minimum mengembalikan node
dengan nilai minimum setelah menghapusnya dari Min Heap.

Langkah pertama yang harus dilakukan saat pengkodingan adalah, buat method untuk meng-
heapify queue nantinya. Heapify adalah proses mengubah pohon biner menjadi struktur data
Heap. Heap adalah bagian dari memori yang terorganisasi untuk dapat melayani alokasi memori
secara dinamis
Setelah itu buat method untuk memasukan elemen ke queue, setelah elemen di masukan, maka
queue akan di heapify-kan.

Kemudian buat juga method untuk menghapus elemen dari queue, pada method ini diperlukan
juga method heapify.
Method di bawah berfungsi untuk menampilkan Queue

Kemudian pada main method, panggil method method diatas beserta elemennya
Outputnya adalah :

Max-Heap array:

95342

After deleting an element:

9532

Anda mungkin juga menyukai