• Tidak ada hasil yang ditemukan

ANTRIAN BERPRIORITAS

N/A
N/A
Protected

Academic year: 2017

Membagikan "ANTRIAN BERPRIORITAS"

Copied!
4
0
0

Teks penuh

(1)

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

Misalkan analogi system member adalah sebagai berikut, sebuah perusahaan menyediakan tiga

jenis member dan juga melayani orang di luar member. Misalkan tiga jenis member tersebut

adalah Silver, Gold dan Platinum, dimana Gold lebih tinggi dari Silver dan Platinum lebih tinggi

dari Gold. Suatu ketika terjadi sebuah antrian untuk pelayanan jasa dimana yang pertama

mengantri adalah person NonMember, namun kemudian dibelakangnya berturut-turut mengantri

member Silver, Gold dan Platina, maka antrian akan berubah menjadi Platinum, Gold, Silver,

NonMember berturutan dari depan, yang menyebabkan member Platinum akan dilayani atau

keluar dari antrian terlebih dahulu. Hal ini terjadi karena dalam antrian berprioritas element yang

memiliki prioritas tertinggi akan keluar terlebih dahulu, yang dalam hal ini adalah Platinum.

Oleh karenanya, dalam Queue Berprioritas tidak hanya terjadi First In First Out, tapi ditambah

dengan High Priority First Out. Setiap data dengan prioritas tinggi akan dikeluarkan terlebih

dahulu dan ketika ada data yang prioritasnya sama maka yang pertama masuk akan dikeluarkan

terlebih dahulu.

Queue berprioritas dapat disajikan dengan array mau pun pointer, dengan array maka dapat

digunakan array of record dimana recordnya berupa penyimpan data dan penyimpan prioritas.

Pembahasan yang akan dilakukan adalah dengan menggunakan pointer. Secara logika queue

berprioritas sama dengan queue biasa, hanya saja dilakukan sorting berdasarkan prioritas, data

berprioritas tinggi akan berada di bagian depan daripada data dengan prioritasnya lebih rendah.

Dan perbedaan queue berprioritas dan yang tidak, Lebih terlihat dari bagaimana ia meletakkan

(2)

Queue tanpa prioritas

Dari gambar diatas terlihat bahwa data A adalah yang masuk terlebih diikuti data B, C dan yang

terakhir adalah D, ketika ada satu data yang dikeluarkan atau hendak dihapus maka data A yang

dieksekusi.

Queue dengan prioritas

Gambar diatas adalah antrian dengan prioritas, meski nampaknya data A adalah yang pertama

kali masuk namun dalam kenyataanya bisa saja data B yang masuk terlebih dahulu, begitu pula

data-data yang lain. Hal ini dapat terjadi karena adanya prioritas. Ketika ada satu data yang

hendak dikeluarkan dari antrian maka data A yang dieksekusi terlebih dahulu karena memiliki

prioritas yang paling tinggi. Namun, ketika memasukkan data, kita harus memikirkan tempat

yang sesuai untuk data tersebut akibat prioritasnya. Contoh akan dimasukkan data Z dengan

prioritas 1.

(3)

Pembandingan prioritas terus dilakukan hingga akhirnya mendapati data yang sama prioritasnya, lebih tinggi prioritanya atau ketika antrian sudah habis. Jika pembandiangan dilakukan terus hingga antrian habis maka data yang diinputkan akan menempati posisi paling depan.

Program Queue_berprioritas;

(4)

else

begin {elemen yg akan disisipkan mempunyai prioritas tinggi} Baru^.next := temp^.next;

temp^.next := Baru end

end end;

Procedure Baca(Q:queue); var

temp : queue; begin

Temp := Q^.next; repeat

Write('Info : ',temp^.info);

writeLN(' Priorotas : ',temp^.prioritas); temp:=temp^.next;

until temp=Q; end;

begin

awal(Ngantri);

writeln('Masukkan Data / Isikan prioritas 0 untuk berhenti'); repeat

write('Informasi, Prioritas : '); readln(element,prior);

if prior <> 0 then

Enqueue(Ngantri, element, Prior); until prior=0;

writeln('Urutan Prioritas'); Baca(Ngantri);

Gambar

Gambar diatas adalah antrian dengan prioritas, meski nampaknya data A adalah yang pertama

Referensi

Dokumen terkait

Karena dalam bahasa C elemen sebuah array dimulai dengan 0 maka proses inisialisasi nilai depan dan belakang bukan 0 tetapi -1 sehingga ketika ada proses penambahan elemen

Master setting waktu digunakan untuk mengatur waktu-waktu yang nanti akan digunakan dalam pengnturan data-data simulasi.. Waktu ini digunakan ketika pola yang diinginkan

Function IsFull berguna untuk mengecek apakah Queue sudah penuh atau masih bisa menampung data dengan cara mengecek apakah tempat yang masih kosong tinggal satu atau

Fungsi ini berguna ketika proses dequeue yaitu ketika sebuah elemen akan diambil, maka harus diperiksa dulu apakah memiliki data atau tidak.. Fungsi ini akan mempunyai

2) Algoritma memperbarui lokasi ketika berpindah tempat. Proses pembaruan lokasi digunakan ketika pengguna berpindah tempat dari tempat sebelumnya. Sistem mengambil data

 Mengetahui pengaruh penggunaan dua buah stack pada Amortized Queue dibandingkan dengan penggunaan array pada Queue biasa dalam pengurutan data per digit di dalam

Harga benih pokok termasuk ke dalam atribut prioritas rendah pada kuadran III, karena dianggap kurang penting pengaruhnya bagi petani dan pelaksanaanya oleh perusahaan

INISIALISASI  Proses inisialisasi queue yang disimpan dalam bentuk linked list adalah dengan memberikan nilai NULL ke pointer depan dan belakang yang menandakan bahwa pointer depan