Add Queue Array
Add Queue Array
array queue
Queue (2)
Operasi-operasi: Create()
Untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head = -1 dan Tail = -1
Queue (3)
Queue (4)
IsEmpty()
Untuk memeriksa apakah Antrian sudah penuh atau belum Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty Head tidak diperiksa, 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
Queue (5)
Queue (6)
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
Queue (7)
Enqueue() 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 terlebih dahulu
Queue (8)
Queue (9)
Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 Penggeseran dilakukan dengan menggunakan looping
Queue (10)
Queue (11)
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 ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca
Queue (12)
Queue (13)
Tampil()
Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail
Circular Queue
Di dunia nyata apabila seseorang sedang mengantri (misalnya antri tiket kereta api), apabila telah dilayani dan memperoleh tiket, maka ia akan keluar dari antrian dan orang-orang yang berada di belakangnya akan bergerak maju ke dapan. Kita bisa saja menggerakkan setiap item data ke depan apabila kita menghapus data yang terdepan, tetapi hal ini kurang efektif. Sebaliknya kita tetap menjaga setiap item data di posisinya, yang kita lakukan hanyalah merubah posisi front dan rear saja.
Circular Queue
Yang menjadi permasalahan adalah apabila posisi rear berada pada bagian akhir dari array (atau pada nomor indeks yang terbesar). Meskipun ada bagian yang kosong di awal-awal array karena mungkin data telah dihapus, data baru tidak bisa dimasukkan lagi karena rear-nya sudah tidak bisa bergerak lagi. Mungkinkah posisi rear nya bisa berpindah?
Circular Queue
Situasi seperti itu bisa dilihat seperti gambar berikut:
Circular Queue
Untuk menghindari permasalahan seperti itu (tidak bisa memasukkan data baru) meskipun queuenya belum penuh, maka front dan rear-nya berputar (kembali) ke bagian awal array. Kejadian seperti ini dinamakan dengan circular queue (atau kadang-kadang disebut juga dengan istilah ring buffer).
Circular Queue
Kejadian seperti seperti terlihat pada gambar berikut: Perhatikan bahwa setelah rear berputar (kembali) ke bagian awal array, posisinya sekarang di bawah front, kebalikan dari posisi aslinya (front berada di bawah rear). Dengan menghapus beberapa data sehingga pada suatu saat front juga akan berputar (balik) ke bagian awal array, sehingga front dan rear akan ke susunan aslinya (front di bawah rear).
Tugas
1. Buatlah flowchart untuk operasi penambahan dan penghapusan data pada antrian dengan menggunakan array. 2. Buatlah flowchart untuk operasi penambahan dan penghapusan data pada antrian dengan menggunakan circular queue.