Mempelajari tipe data queue dan bagaimana menggunakan fungsi insert, remove, is_empty dan is_full. Mempelajari bagaimana mengimplementasikan queue dengan array.
Queue adalah tipe data abstrak (ADT) yang bersifat FIFO (First In First Out); FIFO = data yang pertama kali masuk akan dikeluarkan yang pertama kali juga. Data baru akan dimasukkan lewat ujung belakang, sedangkan data lama dikeluarkan lewat ujung depan. Queue bisa diimplementasikan dengan menggunakan array atau linked list. Model queue ada yang single direction dan ada yang circular track
Untuk mengatur proses dalam sebuah system sesuai dengan urutannya proses dalam sistem computer, printer job spooler, winamp file play list Simulasi dan modeling Air port, traffic/ lalu lintas, client – server, bank Predicting performance berdasar model dan simulasi kasir swalayan, toko
Inisialisasi queue menjadi empty queue. Menentukan apakah queue dalam keadaan Kosong, Is_Empty. Menentukan apakah queue dalam keadaan Penuh, Is_Full. Jika queue belum penuh, Insert data baru ke bagian ujung pangkal queue. Jika queue tidak kosong, Remove data dari bagian ujung depan queue.
1.Inisialisasi queue : jumlah=0, depan =0, belakang=0 depan belakang A 2. Insert ‘A’ jumlah=1, depan =0, belakang=1 depan belakang BA 3. Insert ‘B’ jumlah=2, depan =0, belakang=2 depan belakang CBA 4. Insert ‘C’ jumlah=3, depan =0, belakang=3 depanbelakang
Contoh CB 5. remove jumlah=2, depan =1, belakang=3 depan belakang C 6. remove jumlah=1, depan =2, belakang=3 depan belakang DC 7. Insert ‘D’ jumlah=2, depan =2, belakang=4 depan belakang EDC 8. Insert ‘E’ jumlah=3, depan =2, belakang=5 depanbelakang
D K D K P D K P O K P O P O OO T O T R O T R W O T R W Y abcdefg hij Jumlah ? Depan ? Belakang ?
Inisialisasi digunakan untuk membuat queue dengan cara memberikan nilai awal dari setiap komponen queue. Inisialisasi set jumlah=0 set depan=0 set belakang=0
Menyatakan apakah queue dalam keadaan kosong, dapat diketahui dari variabel jumlah. Is_Empty if jumlah=0 return TRUE else return FALSE
Menyatakan apakah queue dalam keadaan kosong, dapat diketahui dari variabel jumlah. Is_Full if jumlah == ukuran maksimum queue return TRUE else return FALSE
Bertujuan untuk memasukkan data ke queue. Data yang dimasukkan disimpan di posisi belakang queue Insert jika Is_Full cetak ERROR : queue sudah penuh else letakkan data ke queue posisi belakang increment belakang increment jumlah
Bertujuan untuk mengeluarkan data dari queue. Data yang dikeluarkan adalah data di posisi depan. Remove jika is_Empty cetak ERROR : queue sudah kosong else x = data queue pada indeks depan increment depan decrement jumlah
Lakukan looping mulai indeks depan sampai indeks belakang kemudian tampilan. For I in depan…belakang tampilkan data[i] end
AQU depan belakang AQUE depan belakang QUE depan belakang Lanjutkan sampai belakang = maxsize Apakah Queue full? depan belakang QUEUE
Isi queue di shift ke awal array Tidak Efisien !!! depan belakang AQUEUE
0 1 2 MaxSize - 1 MaxSize - 2 MaxSize - 3
MaxSize - 1 belakang depan 0
Tambah ‘T’ pada belakang belakang = belakang + 1 T MaxSize - 1 belakang depan 0
Tambah ‘H’ at belakang belakang = belakang +1 T H MaxSize - 1 belakang depan 0
Tambahkan ‘I’ at belakang belakang = belakang +1 T H MaxSize - 1 belakang depan 0 I
Lanjutkan sampai Belakang=MaxSize-1 MaxSize - 1 belakang depan 0 E U E U Q A MaxSize = 16
Tambah Z ke belakang belakang = belakang + 1 = 16 = MaxSize MaxSize - 1 belakang =? depan 0 E U E U Q A Z MaxSize = 16
Tambahkan ‘Z’ pada belakang belakang = (belakang +1) mod MaxSize MaxSize - 1 belakang depan 0 E U E U Q A Z MaxSize = 16