STRUKTUR DATA QUEUE Antrian Queue Dengan Array DEFINISI
- Slides: 22
STRUKTUR DATA QUEUE (Antrian)
Queue Dengan Array DEFINISI • Bersifat FIFO (First In First Out) • Elemen yang pertama masuk ke antrian akan keluar pertama kalinya • ENQUEUE: menambahkan data pada sebuah list • DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian • Antrian dapat dibuat dengan menggunakan 2 cara: Liniear Array dan Circular Array
Animasi Queue ENQUEUE dan DEQUEUE
Queue Linier Array • Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya • Sehingga membutuhkan 2 variabel: Head dan Tail
Queue Linier Array • Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi HEAD dan TAIL • Saat data ditambahkan ke queue, naikkan posisi pointer TAIL • Saat data dihapus dari queue, naikkan posisi pointer HEAD • Saat head==tail, berarti queue kosong head Array x … x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 ujung depan Array x tail … … head==tail ujung belakang x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 … Queue adalah pada bagian yang berwarna hijau
Masalah yang timbul pada Queue Linier Array Head dari tail selalu bertambah secara motononik, sehingga memerlukan array dengan ukuran tak terhingga head array x … tail x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 … Pointer selalu bergerak ke kanan, tak pernah kembali Menyambungkan HEAD dan TAIL dari array itu sehingga membentuk cincin (RING BUFFER)
Queue Circular Array n-2 n-1 0 1 head tail n-2 n-1 0 tail==head • Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama • Menambahkan data ke queue: nilai tail dinaikkan satu • Menghapus data dari queue: nilai head dinaikkan satu • Queue kosong pada saat head==tail 1 Queue adalah pada bagian yang berwarna hijau
Masalah pada Ring Buffer • Pada saat rear==front , ada dua interpretasi yang muncul, “queue kosong” ataukah “queue full” n-2 n-1 0 1 n-2 n-1 empty rear==front 0 1 full rear==front Queue adalah pada bagian yang berwarna hijau
Masalah pada Ring Buffer • Solusi – Menyiapkan sebuah FLAG untuk memberi tanda kalau queue kosong – Queue dijaga agar tidak pernah full, dengan menyisakan sebuah elemen yang kosong n-2 n-1 0 1
Operasi Queue (1) • Operasi-operasi: Create() – Untuk menciptakan dan menginisialisasi Queue – Dengan cara membuat Head dan Tail = -1
Queue (2)
Queue (3) • Is. Empty() – 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
Queue (4)
Queue (5) • Fungsi Is. Full – 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 (6) • 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 (7)
Queue (8) • 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 (9)
Queue (10) • 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 (11)
Queue (12) • Tampil() – Untuk menampilkan nilai-nilai elemen Antrian – Menggunakan looping dari head s/d tail
Soal-soal • • Tambahkanlah function untuk mencari suatu elemen dalam queue Tambahkan function untuk mengedit suatu elemen dalam queue Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam function tersendiri Bagaimana penerapan queue pada linked list dua kepala?
- Materi queue
- Jenis jenis queue
- Perbedaan array 1 dimensi dengan array 2 dimensi
- Stack
- Priority queue vs queue java
- Jelaskan struktur data array
- Contoh aplikasi array dimensi dua adalah
- Definisi queue
- Soal teori antrian
- Teori antrian riset operasi
- Antrian
- Teori antrian riset operasi
- Teori antrian riset operasi
- Macam macam aturan antrian
- Contoh program stack pada python
- Contoh soal graph struktur data
- Algoritma antrian
- Pin grid array vs land grid array
- Array angular
- Jagged array
- Associative array vs indexed array
- Compare broadside and endfire array
- Larik adalah