QUEUE
Tim Dosen:
Purbandini, S.Si., M.Kom. (PJMK)
Yutika A Effendi, S.Kom., M.Kom.
Rodik W Indrawan, S.ST., M.Tr.T.
è Suatu linier list dimana operasi delete terjadi pada sisi depan
(front) dan operasi insert terjadi pada sisi belakang (rear).
WHAT IS QUEUE?
ü Bersifat FIFO (First In First Out)
ü Elemen yang pertama masuk ke antrian akan keluar pertama
kalinya
ü DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian
ü Antrian dapat dibuat dengan menggunakan: Linear Array dan
Circular Array
Front : Depan
Rear : Belakang
KEGUNAAN QUEUE
Meski Queue sangat sederhana, namun Queue merupakan kakas
dasar penyelesaian masalah-masalah besar.
2. Sistem produksi
§ Barisan bahan atau komponen yang akan diproses suatu mesin.
§ Barisan bahan atau komponen yang akan diproses suatu manusia.
KARAKTERISTIK QUEUE
Karakteristik penting dari antrian adalah :
1. Elemen antrian yaitu item-item data yang terdapat di elemen
antrian
2. Front (elemen terdepan dari antrian)
3. Rear (elemen terakhir dari antrian)
4. Jumlah elemen pada antrian (Count)
5. Status antrian
KARAKTERISTIK QUEUE
Kondisi antrian yang menjadi perhatian adalah :
1. Penuh
Bila elemen pada antrian mencapai kapasitas maksimum antrian.
Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian.
Penambahan elemen menyebabkan kondisi kesalahan Overflow.
2. Kosong
Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin
dilakukan pengambilan elemen dari antrian. Pengambilan elemen
menyebabkan kondisi kesalahan Underflow.
IMPLEMENTASI QUEUE
1. Implementasi Queue dengan Linear Array
2. Implementasi Queue dengan Circular Array
IMPLEMENTASI QUEUE
Implementasi Queue dengan Linear Array
ü Linear array adalah suatu array yang dibuat seakan-akan merupakan
suatu garis lurus dengan satu pintu masuk dan satu pintu keluar.
ü Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu
keluar di ujung satunya
ü Sehingga membutuhkan variabel : Head dan Tail
PENDEFINISIAN QUEUE
#define MAX 8
typedef struct{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;
OPERASI-OPERASI PADA QUEUE
Create()
1. Untuk menciptakan dan menginisialisasi Queue
2. Dengan cara membuat Head dan Tail = -1
OPERASI-OPERASI PADA QUEUE
IsEmpty()
1. Untuk memeriksa apakah Antrian sudah penuh atau belum
2. Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
3. Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala
antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
4. Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian
kebelakang, yaitu menggunakan nilai Tail
OPERASI-OPERASI PADA QUEUE
IsFull()
• Untuk mengecek apakah Antrian sudah penuh atau belum
• Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena
MAX-1 adalah batas elemen array pada C) berarti sudah penuh
OPERASI-OPERASI PADA QUEUE
Enqueue(data)
• Untuk menambahkan elemen ke dalam Antrian,
penambahan elemen selalu ditambahkan di elemen paling
belakang
• Penambahan elemen selalu menggerakan variabel Tail
dengan cara increment counter Tail
OPERASI-OPERASI PADA QUEUE
Enqueue(data)
OPERASI-OPERASI PADA QUEUE
Dequeue()
• Digunakan untuk menghapus elemen terdepan/pertama dari
Antrian
• Dengan cara mengurangi counter Tail dan menggeser semua
elemen antrian kedepan
• Penggeseran dilakukan dengan menggunakan looping
OPERASI-OPERASI PADA QUEUE
Clear()
• Untuk menghapus elemen-elemen Antrian dengan cara
membuat Tail dan Head = -1
• Penghapusan elemen-elemen Antrian sebenarnya tidak
menghapus arraynya, namun hanya mengeset indeks
pengaksesan-nya ke nilai -1 sehingga elemen elemen Antrian
tidak lagi terbaca
OPERASI-OPERASI PADA QUEUE
Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head sampai tail
IMPLEMENTASI QUEUE
Implementasi Queue dengan Circular Array
Salah satu variasi array adalah array melingkar (circular array), artinya array
dapat diakses mulai dari sembarang indeks (indeks awal) kearah indeks
terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali
ke indeks awal.
2. ANTRIAN BERPRIORITAS
JENIS-JENIS QUEUE
DEQUE
DEQUE adalah antrian dimana elemennya bisa masuk dan keluar
lewat kedua ujungnya (berbeda dengan queue yang hanya bisa masuk
lewat ujung belakang dan keluar lewat ujung depan).
DEQUE
JENIS-JENIS QUEUE
Salah satu contoh antrian berprioritas ini adalah sistem berbagi waktu (time sharing
system), dimana program yang mempunyai prioritas tinggi akan dikerjakan lebih
dahulu dan program-program yang berprioritas sama akan membentuk antrian yang
biasa.
LATIHAN
1. Buatlah program dalam bentuk menu untuk mengimplementasikan
antrian. Menu tsb berisi memasukkan data, menghapus data,
menampilkan data dan keluar.
2. Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen
queue dengan menggunakan fungsi yang sudah dibuat pada soal 1!
3. Buatlah program queue dengan menggunakan circular array dan linked
list!
PERTEMUAN SELANJUTNYA….
TUGAS 2: QUEUE
INDIVIDU
REFERENSI
1. Mark Allen Weiss, “Data Structures and Algorithm Analysis in C++ 4ed”, Addison-
Wesley, New Jersey, 2014
2. Robert Sedgewick, Philippe Flajolet, “An Introduction to the Analysis of Algorithms
2ed”, Addison-Wesley, New Jersey, 2013
3. Jeri R. Hanly, Elliot B. Koffman, Problem Solving and Program Design in C, 7th Edition,
Addison Wesley, 2012.
4. Levitin, Anany. Introduction to the Design & Analysis of Algorithms. 3rd Edition.
United States of America: Pearson Education Inc. 2012.
5. Thomas H. Cormen, Charles E.Leiserson, Ronald L. Rivest, Introduction to Algorithms,
McGraw-Hill, 2003
THANKS!
Do you have any questions?