Langsung ke konten utama

Mengenal Queue (Antrian) Pada C++


Queue / Antrian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada satu ujung (disebut dengan sisi belakang atau tail/rear) dan penghapusan atau pengambilan elemen dilakukan lewat ujung lain (disebut dengan sisi depan atau head/front). Antrian menggunakan prinsip Pertama Masuk Pertama Keluar – First In First Out (FIFO). Dengan kata lain urutan masuk sama dengan urutan keluar. Antrian banyak dijumpai dalam kehidupan sehari-hari. Mobil-mobil yang mengantri digerbang tol untuk membeli karcis tol; orang-orang yang mengantri di loket untuk membeli karcis film juga membentuk antrian. 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.

1. Deklarasi Antrian dengan array
Proses pendeklarasi antrian adalah proses pembuatan struktur antrian dalam memori. Struktur antrian terdiri dari data dalam array, head untuk menunjukkan ujung antrian dan tail untuk menunjukkan akhir antrian.
#define MAX 6
struct Queue
{
   int data[MAX];
   int head;
   int tail;
};


2. Inisialisasi
Inisialisasi antrian adalah proses pembuatan suatu antrian kosong. Proses inisialisasi untuk antrian yang menggunakan array adalah dengan mengisi nilai field head dan tail dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 maka head dan tail diisi dengan nilai -1.
void Create()
{
    antrian.head=antrian.tail=-1;
}


3. Operasi cek kosong
Operasi ini digunakan untuk memeriksa apakah antrian dalam keadaan kosong. Operasi ini penting dilakukan dalam proses Dequeu. Ketika suatu antrian dalam keadaan kosong, maka proses Dequeue tidak bisa dilakukan. Operasi ini dilakukan dengan memeriksa tail. Jika tail bernilai -1, maka berarti antrian dalam keadaan empty (kosong).
int IsEmpty()
{
if(antrian.tail==-1)
return 1;
else
return 0;
}


4. Operasi cek penuh
Operasi ini berguna untuk memeriksa keadaan antrian apakah sudah penuh atau belum. Operasi ini akan memberikan nilai true (1) jika field tail sama dengan size-1.
int IsFull()
{
  if(antrian.tail==MAX-1)
     return 1;
  else
     return 0;
}


5. Operasi Enqueue
Operasi ini berguna untuk menambah suatu elemen data baru pada antrian dan disimpan pada posisi head dan tail yang akan mengakibatkan posisi tail akan berubah. Langkah operasi ini adalah :
    a. Periksa apakah kosong. Jika kosong maka ubah posisi head dan tail pada posisi 0, kemudian    masukkan datanya.
    b. Jika antrian tidak kosong maka naikkan posisi tail sebesar 1, kemudian masukkan datanya.
void Enqueue(int data)
{
   if(IsEmpty()==1)
   {
       antrian.head=antrian.tail=0;
       antrian.data[antrian.tail]=data;
      cout<    }
   else
   {
       antrian.tail++;
       antrian.data[antrian.tail]=data;
       cout<   }
}


6. Operasi Dequeue
Operasi ini berguna untuk mengambil elemen pertama (head) dari antrian. Penghapusan dilakukan dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan menggunakan looping
int Dequeue()
{
   int i;
   int e=antrian.data[antrian.head];
   for(i=antrian.head;i<=antrian.tail-1;i++)
   {
      antrian.data[i]=antrian.data[i+1];
   }
  antrian.tail--;
  return e;
}


7. Operasi Clear
Digunakan 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
void Clear()
{
   antrian.head=antrian.tail=-1;
   cout<<"Data Clear";
}


8. Operasi Tampil
Digunakan untuk menampilkan nilai-nilai elemen antrian. Proses menampilkan data dalam antrian dilakukan dengan menggunakan looping dari head s/d tail
void Tampil()
{
  if (IsEmpty()==0)
  for (int i=antrian.head;i<=antrian.tail; i++)
     cout<  else
    cout<<"Data Kosong\n";
}


Program Lengkap:

Komentar

  1. mas ko koding nya ngak jadi ya

    BalasHapus
    Balasan
    1. coba dibagian tanda ';' atau mungkin enter biasanaya kesalahan pada bagian itu, terimaksh sudah berkunjung

      Hapus
    2. mas tempat ane gak bsa :/

      Hapus
  2. itu yang perlu diganti dibagian

    #include
    using namespace std;

    terima kasih sobat

    BalasHapus
  3. sangat membantu gan, teruima kasih

    BalasHapus
  4. dear bro,
    ada tugas dari dosen untuk membuat program antrian dengan c++ (priority queue)
    Bisa di bantu codingannya untuk perintah dibawah :
    Pengantre adalah penonton konser musik, yang akan memasuki arena pertunjukan. Setiap penonton
    memiliki tiket dengan informasi kelas dan nomor tiket. Kelas tiket berupa VVIP, VIP, Balkon dan
    Festival. Semua penonton yang sudah siap memasuki arena pertunjukan akan berdiri dalam sebuah
    antrean sesuai dengan urutan waktu kedatangannya. Untuk memasuki arena, petugas
    memberlakukan pengaturan dengan memberikan prioritas sesuai kelas tiket yang dimiliki oleh
    pentonton. Prioritas diberikan sesuai dengan urutan penulisan kelas tiket di atas. Untuk mencegah
    kerusuhan dan memberikan keadilan, masing-masing kelas diijinkan memasuki arena sebanyak
    maksimum 10 orang per gilirannya. Apabila sudah mencapai kuota atau tidak ada lagi jenis tiket
    tersebut dalam antrean, maka antrean diberikan kepada jenis tiket berikutnya.

    BalasHapus
  5. Mas ko saat mau ditampilkan malah muncul nyah masih kosong sih output nyah ga ada angka nyah

    BalasHapus
  6. Saat tekan no 3 untuk ditampilkan ko muncul nyah data kosong padahal data nyah udh dimasukin

    BalasHapus
  7. walaupun terlihat sangat jelimet,tapi sangat bermanfaat,,terima kasih infonya,,salam sukses selalu..

    BalasHapus

Posting Komentar

Kritik, Saran dan Komentar Kami tunggu

Postingan populer dari blog ini

Kekuatan dan Kelemahan Tipe - Tipe Pokemon

Tipe - Tipe Pokemon Demam pokemon kian menginkat, buat kami yang gemar memainkannya mimin beri daftar kekuatan dan kelemahan tiap tipe pokemon agar membatu dalam battel di gym. tiap - tiap pokmon dikelompokan kedalam 18 tipe yang berbeda diantarnya  Normal, Fighting, Flying, Poison, Ground, Rock,Steel, Fire, Psychic, Ice,  Bug, Grass, Water, Electric, Ghost, Dragon, Fairy dan Drak Setiap Pokemon dapat memiliki satu atau dua Tipe sekaligus. Contoh, Pikachu merupakan Pokemon bertipe Electric, sedangkan Bulbasaur merupakan Pokemon dengan Tipe Grass sekaligus Poison. Ada total 151 Pokemon, 84 diantaranya hanya memiliki satu Tipe sedangkan 67 Pokemon memiliki dua Tipe. Pokemon yang tipenya sama, memiliki kekuatan dan kelemahan yang sama juga saat Battle. Misal, Pokemon Tipe Poison melawan Tipe Poison, damage yang akan diterima akan setara. Di sisi lain, Pokemon Tipe Water mampu melakukan attack dengan damage besar ke Pokemon Tipe Fire yang lemah terhadap ser...

Macam-Macam Topologi Jaringan Komputer

Klikartikel.com - Pengertian topologi jaringan komputer yaitu suatu teknik atau cara untuk menyambungkan komputer ke beberapa komputer sekaliguan menjadi suatu jaringan yang terkoneksi satu dengan yang lainya. Ada banyak jenis topologi jaringan komputer didunia ini namun yang paling sering digunakan ada 5 jenis jaringan yaitu topologi jaringan ring, topologi jaringan start, topologi jaringan bus, topologi jaringan mesh dan topologi jaringan tree. Berikut ini pembahasaan dari tipe - tipe topologi jaringan. 1. Topologi Ring Topologi ring yaitu teknik menyambungkan komputer dengan cara setiap komputer di hubungkan dengan komputer yang lain dan seterusnya sampai kembali ke komputer pertama yang nantinya akan membentuk seperti lingkaran sehingga topologi ini sering disebut dengan ring. Komputer 1 akan mengirim file atau berkomunikasi dengan komputer 4, maka data akan melewati komputer 2 dan komputer 3 sampai data diterima oleh komputer...

Peringkat dan Jenis Processor Pada Android

Sebenarnya ada banyak jenis processor yang digunakan untuk perangkat android yang kita gunakan, tapi pada postingan kali ini saya hanya membagikan processor android yang sering digunakan saat ini beserta ranking kekuatan dan performa terbaik pada processor itu sendiri. Perlu diingat, informasi yang saya tulis dibawah ini mungkin belum bisa dikatakan 100% benar, karena saya hanya punya sedikit referensi untuk mengumpulkan data ini. Snapdragon  Yang pertama ada Processor Snapdragon. Processor Snapdragon merupakan processor android terbaik ( menurut adonbpc ), karena processor ini memiliki performa yang sangat baik dibanding processor android lainnya yang setara dengan seri processor ini. Processor ini selalu menghadirkan teknologi terbaru dan pastinya bertenaga dan didukung dengan keunggulan seperti seperti menghasilkan grafik yang lebih tinggi, penggunaan batrai yang hemat, serta keunggulan layar yang menghasilkan resolusi tinggi. Peringkat menurut performa terbaik Snapd...