Queue atau antrian merupakan suatu kumpulan data yang memiliki head/front dimana data dikeluarkan (dequeue) dan tail/rear dimana data dimasukkan (enqueue) ke antrian.
Proses QUEUE
Seperti halnya pada antrian yang biasa kita lakukan sehari-hari, di manapun. Antrian dimulai dari depan ke belakang, jika didepan belum pergi meninggalkan antrian maka antrian terus bertambah dari belakang dan antrian paling belakang disini dinamakan rear/tail.
Jadi selama antrian terus bertambah (enqueue) maka antrian yang paling akhir adalah tail/rear.

Jika ada yang keluar dari antrian (dequeue) maka data tersebut adalah yang paling depan (head/front), dan data berikutnya setelah data yang keluar berubah menjadi yang paling depan (head/front).

Queue menggunakan metode FIFO, dimana yang masuk pertama kali akan keluar pertama kali juga.
Program QUEUE
  1. Untuk mengimplementasikan program queue di C++ kita membutuhkan tiga method atau fungsi enqueue(); untuk menambahkan data ke antrian,dequeue(); untuk me ngeluarkan data dari antrian dan printQueue() untuk menampilkan queue.
  2. Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk mengecek apakah antrian kosong isEmpty() dan antrian penuh isFull().
  3. Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum array yang nanti akan kita definisikan sebagai maksimum antrian, jadi kita bisa mengetahui indeks pertama adalah front dan data indeks yang kosong untuk menambahkan data sebagai rear-nya.
  4. Untuk data antriannya terstruktur kita bisa menggunakan struct sehingga lebih mudah mengakses data frontrear dan array datanya sendiri seperti sebuah object.
  5. Karena ini adalah program konsole maka tentu kita juga akan membuat fungsi main().
Contoh Program :


#include <iostream>
#define MAX 5 //maksimum data queue
using namespace std;

//Deklarasi struct antrian
struct Queue {
  int front, rear, data[MAX];
}Q;

//cek apakah antrian penuh
bool isFull() {
  return Q.rear == MAX;
}

//cek apakah antrian kosong
bool isEmpty() {
  return Q.rear == 0;
}

//Menampilkan Queue
void printQueue() {
  if (isEmpty()) {
cout << "Antrian kosong"<<endl;
  }
  else {
    cout << "QUEUE : ";
    for (int i = Q.front; i < Q.rear; i++)
    //menambahkan koma jika data tidak terdapat di antrian pertama
      cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
    cout << endl;
}
}

//manambahkan data ke antrian
void enqueue() {
  if (isFull())
  {
    cout << "Antrian penuh!"<<endl;
  }
  else {
    int data;
    //menambahkan data ke antrian
    cout << "Masukkan Data : ";cin >> data;
    Q.data[Q.rear] = data;
    //menempatkan tail pada elemen data terakhir yang ditambahkan
    Q.rear++;
    cout << "Data ditambahkan\n";
    printQueue();
  }
}

// mengambil data dari antrian
void dequeue() {
  if (isEmpty())
  {
    cout << "Antrian masih kosong"<<endl;
  }
  else{
    cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;
    //menggeser antrian data ke head
    for (int i = Q.front; i < Q.rear; i++)
      Q.data[i] = Q.data[i + 1];
    //menempatkan tail pada data terakhir yang digeser
    Q.rear--;
    printQueue();
  }
}

int main() {
  int choose;
  do
  {
    //Tampilan menu
    cout << "-------------------\n"
      << " Menu Pilihan\n"
      << "-------------------\n"
      << " [1] Enqueue \n"
      << " [2] Dequeue\n"
      << " [3] Keluar \n\n"
      << "-------------------\n"
      << "Masukkan pilihan : "; cin >> choose;
    switch (choose)
    {
    case 1:
      enqueue();
      break;
    case 2:
      dequeue();
      break;
    default:
      cout << "Pilihan tidak tersedia";
      break;
    }
  } while (choose !=3);
  return 0;
}

Untuk mencoba hasil running diatas, silakan klik run(segitiga hijau) dibawah :

Sekian penjelasan dari saya, salah khilaf mohon maaf terima kasih :)

Sumber :
Rahmat subekti's blog - tentang Implementasi Queue di C++
My repl.it account

0 Komentar