Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
Tentang
QUEUE (ANTRIAN)
Pembahasan
Pengertian Queue
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat
dilakukan terhadap sebuah queue yaitu :
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
Const max = 5
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 :
belakang := belakang + 1;
antrian [belakang] := x;
x := antrian [depan];
depan := depan + 1;
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
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
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).
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 :
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
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).
1. Untuk penambahan.
3. Untuk pengahapusan.
4. Front telah mencapai elemen terakhir array, maka akan menuju elemen
pertama jika antrian masih berisi elemen.
Constmax_elemen = 5;
Varantrian :antri;
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.
begin
write ( antriankososng);
else
begin
dequeue := q [depan];
depan := 1
else
depan := depan + 1;
end;
end;
Antrean Berprioritas
Penutup
Kesimpulan