400 likes | 726 Views
ANTRIAN. Farid Wajdi Yusuf. Pendidikan Teknik Informatika dan Komputer Jurusan Pendidikan Teknik Elektro Fakultas Teknik – Universitas Negeri Makassar. Contoh Antrian. Contoh antrian : Antrian printer Antrian tiket bioskop Antrian pada kasir sebuah bank.
E N D
ANTRIAN Farid Wajdi Yusuf PendidikanTeknikInformatikadanKomputer JurusanPendidikanTeknikElektro FakultasTeknik – UniversitasNegeri Makassar
ContohAntrian • Contoh antrian : • Antrian printer • Antriantiketbioskop • Antrianpadakasirsebuah bank. Ketikaseorangpelanggandatang, akanmenujukebelakangdari antrian. Setelah pelanggan dilayani, antrian yang berada di depan akan maju.
PERLU DIINGAT • Suatu item yang ditambahkandibelakangantriantidakbisadihapussebelum item didepannyadihapus.
Queue (antrian) adalah struktur data dimana proses pengambilan dan penambahan element dilakukan pada ujung yang berbeda. • Queue mengikuti konsep FIFO. • FIFO (First In First Out) : elemen yang pertama masuk akan menjadi elemen yang pertama kali keluar.
Head Tail:
Alat mailbox elektronik (berdasarkankronologi). • Mesinantrianpadatokoatau bank. • Prosesmenungguuntuk run padaprosessorpadasistemkomputer.
QUEUE DAN STACK • Karakteristik yang membedakan queue (antrian) dari stack adalahcaramenyimpandanmengambil data denganstruktur first in first out (FIFO). • Hal iniberartielemenpertama yang ditempat-kanpada queue adalah yang pertamadipindahkan.
Enqueue : yaituproses penambahan elemen pada queue. • Elemen ditempatkan pada ujung (tail)
Dequeue yaituproses pengambilan elemen pada queue. • Memindahkanelemendarikepala (head) sebuah queue.
Penambahan dilakukan pada bagian belakang. Sedangkan pengambilan dilakukan pada bagian depan (element yang pertama masuk). Queue dequeue enqueue
GAMBAR PROSES A B QUEUE A B C D ENQUEUE C D DEQUEUE
last first Elemen baru Antrian (queue) ATURAN MEMASUKKANQUEUE • Kondisi awal ada sebuah queue dan dibuat sebuah elemen baru yang akan dimasukkan ke dalam queue.
Elemen baru dimasukkan ke dalam queue last first Antrian (queue)
Penunjuk last diubah menunjuk ke elemen baru sebagai elemen paling belakang. last first Antrian (queue)
ATURAN MENGELUARKAN ELEMEN • Kondisiawaladasebuah queue yang berisielemen. last first Antrian (queue)
Penunjuk first diubah ke elemen di belakang elemen paling depan. last first Antrian (queue)
Elemen paling depan dikeluarkan dari queue. last first keluar Antrian (queue)
ANTRIAN BERPRIORITAS • Yaitumengeluarkanelemendari queue berdasarkanprioritaspadaelemenitu. • Elemenpadaantrianberprioritasharusmenyimpannilaiprioritaspadasetiapelemen.
Untuk memasukkan elemennya, tidak harus melalui sisi belakang antrian, tetapi disisipkan dan diurutkan berdasarkan prioritas elemen.
KETENTUAN QUEUE BERPRIORITAS • Elemen yang memilikiprioritaslebihtinggiakanlebihdahulukeluardari queue. • Jikaadaduaelemen yang memilikiprioritassama, maka yang akankeluarterlebihdahuludariantrianadalah yang terlebihdahulumasukkedalamantrian.
last baru 9 7 6 4 2 1 3 Antrian (queue) OPERASIPADA ANTRIAN BERPRIORITAS • Kondisiawaladasebuahantrianberprioritas yang berisielemendanadasebuahelemenbaru yang akandimasukkankedalamantrian. first
Mencari tempat yang sesuai untuk elemen baru sesuai dengan prioritas elemen baru pada antrian. Tempat elemen baru Di belakang elemen 2 last first baru 9 7 6 4 2 1 3 Antrian (queue)
Menyisipkan elemen baru ke dalam antrian. last first 9 7 6 4 3 2 1 Antrian (queue)
Bagaimanadenganoperasimengeluarkansebuahelemendariantrianberprioritas???Bagaimanadenganoperasimengeluarkansebuahelemendariantrianberprioritas???
KARAKTERISTIK QUEUE • Elemenantrianyaitu item-item data yang terdapatdielemenantrian • Front • Rear • Jumlahelemenpadaantrian (Count) • Status antrian
FRONT DAN REAR • Front : pointer bantu yang digunakan untuk menunjuk element yang paling depan. • Rear : pointer bantu yang digunakan untuk menunjuk element yang paling belakang. Queue Dequeue Front Enqueue Rear
Penuh • Bilaelemenpadaantrianmencapaikapasitasmaksimumantrian. • Padakondisiini, tidakmungkindilakukanpenambahankeantrian. Penambahanelemenmenyebabkankondisikesalahan Overflow.
Kosong • Bilatidakadaelemenpadaantrian. • Padakondisiini, tidakmungkindilakukanpengambilanelemendariantrian. • Pengambilanelemenmenyebabkankondisikesalahan Underflow.
DEKLARASI Deklarasi • Deklarasi • Inisialisasi • Cek kosong • Cek penuh • Pengambilan • Penambahan • Pengaksesan
DEKLARASI • Proses yang harus dilakukan pertama kali adalah deklarasi/menyiapkan tempat. • Langkah yang harus dilakukan adalah : • Deklarasi class • Deklarasi struktur data (menggunakan array atau linked list) • Deklarasi pointer front dan rear • Deklarasi variabel size untuk menyimpan besar array. • Deklarasi variabel jumlah untuk mengetahui banyak item yang disimpan pada queue.
CEK KOSONG (ISEMPTY) • Operasi yang digunakan untuk mengecek kondisi queue dalam keadaan kosong. • Pada array : menggunakan pengecekan pada variabel jumlah_item. Jika nilainya = 0 berarti queue dalam kondisi kosong. • Pada linked list : dapat menggunakan pengecekan front atau rear jika nilainya null berarti queue kosong. • Operasi ini harus dapat mengembalikan nilai true jika queu kosong dan false jika sebaliknya.
CEK PENUH (ISFULL) • Operasi yang hanya dapat diterapkan pada queue yang menggunakan array. • Operasi ini digunakan untuk mengecek kondisi queue dalam keadaan penuh. • Caranya : melihat nilai pada variabel jumlah item. Jika nilainya = size-1 (dimana size adalah ukuran array) maka dapat diindikasikan queue dalam kondisi penuh. • Operasi ini harus dapat mengembalikan nilai true jika queue penuh dan false jika sebaliknya.
ANTRIAN BERPRIORITAS • Dalamantrian yang telahdibahassebelum, semuaelemen yang masukdalamantriandianggapmempunyaiprioritas yang sama, sehinggaelemen yang masuklebihdahuluakandiproseslebihdahulu.
Dalampraktek, elemen-elemen yang akanmasukdalamsuatuantrianada yang dikatakanmempunyaiprioritas yang lebihtinggidibanding yang lain. • Antrian yang demikianinidisebutdenganantrianberprioritas (priority queue).
Salahsatucarauntukmengimplementasikanantrianberprioritasadalahdenganmenggunakan linked list. • Jikakitamenggunakan linked list, khususnya single linked list atau double linked list, makaadaketentuan lain yang perludiperhatikan, yaitu:
Setiap node dari linked list terdiritigabagian, yaitubagianinformasi, angkaprioritasdanbagian-bagianpenyambungkesimpul lain. • Simpul X mendahului (terletakdisebelahkiri) simpul Y, jikaprioritas X lebihtinggidibandingprioritas Y ataujikaprioritas X dan Y sama, makasimpul X datanglebihdahuludibandingdengan Y.
Biasanyadibuatsuatuperjanjianbahwaangkaprioritas yang lebihkecilmenunjukkanderajadprioritas yang lebihtinggi. • Sebagaicontoh, jikaangkaprioritaspadasimpul X adalah 1 danpadasimpul Y adalah 2, makadikatakanbahwasimpul X berprioritaslebihtinggidibandingdengansimpul Y.