Queue (Antrian)
Queue
(Antrian) adalah suatu kumpulan data yang mana penambahan data / elemen hanya
dapat dilakukan pada sisi belakang sedangkan penghapusan / pengeluaran elemen
dilakukan pada sisi depan. Jenis struktur data antrian sering digunakan untuk
menstimulasikan keadaan dunia nyata. Antrian banyak dijumpai dalam kehidupan
sehari-hari. Misal : antrian registrasi mahasiswa, tiket kereta api dan
lain-lain.
Berbeda
dengan stack, prinsip yg digunakan
dalam antrian adalah FIFO ( First In
First Out ). Dengan kata lain, urutan keluar elemen akan sama dengan urutan
masuknya. Dalam antrian tidak semuanya dilakukan secara FIFO murni, contoh yg
relevan dalam bidang komputer adalah Time-sharing
Computer System, dimana ada sejumlah
penakai (user) yg menggunakan sistem tersebut secara serempak. Karena sistem
ini biasanya menggunakan processor,
dan sebuah memory utama. Jika processor sedang dipakai oleh seorang
user, maka user yang lain harus antri sampai gilirannya.
Antrian
ini tidak akan dilayani secara FIFO murni tetapi biasanya didasarkan pada suatu
prioritas tertentu. Antrian yang memasukkan unsur prioritas dinamakan dengan
Antrian Prioritas (Priority Queue).
Elemen
yang pertama kali masuk ke antrian akan keluar pertama kalinya. Dequeue adalah mengeluarkan satu elemen
dari suatu antrian. Terdapat satu buah pintu masuk di suatu ujung dan satu buah
pintu keluar di ujung satunya sehingga membutuhkan variabel Head dan Tail.
Deklarasi Queue :
Operasi
dalam Queue
- Create ( )
- Untuk menciptakan dan menginisialisasi Queue
- Dengan cara membuat Head dan Tail = -1
- IsEmpty ( )
- Untuk memeriksa apakah Antrian sudah penuh atau belum
- Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
- Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
- Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.
- 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
- 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
- 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
- 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 pengaksesannya
- Tampil
- Untuk menampilkan nilai-nilai elemen antrian
- Menggunakan looping dari head sampai dengan tail