Pengertian Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur. Queue disebut juga “Waiting Line” yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari Queue. Queue jika diartikan secara harfiah, queue berarti antrian. Perbedaan Stack dengan Queue Stack memakai sistem LIFO atau last in first out (yang pertama masuk akan keluar terakhir, begitu pula yang terakhir masuk akan keluar pertama kali) yang apabila kita mengahapus/ keluar data, maka data yang terakhirlah yang akan terhapus/ keluar terlebih dahulu. Sementara queue memakai siste FIFO atau first in first out (yang pertama masuk akan keluar pertama, begitu pula yang masuk terakhir akan keluar terakhir) yang apabila kita menghapus / mengeluarkan data, maka data yang pertamalah yang akan terhapus/ keluar terdahulu dan data yang terakhir akan terhapus/ keluar terakhir. Operasi-Operasi pada Queue IsEmpty, berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong. IsFull, berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh. EnQueue, berguna untuk memasukkan sebuah elemen dalam queue. DeQueue, berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya. Destroy, berguna untuk menghapus semua elemen dalam queue ataupun queue itu sendiri. #include <iostream.h> #include <conio.h> #define max 100 struct { int tail; int head; int data[max]; }queue; void awal(){ queue.tail = -1; queue.head = 0; } int kosong(){ if(queue.tail == -1) return 1; else return 0; } int penuh(){ if(queue.tail == max-1) return 1; else return 0; } void input(int a){ if(kosong() == 1){ queue.tail++; queue.data[queue.tail]=a; cout<<"Data "<<queue.data[queue.tail]<<" masuk ke queue [enter]"; } else if(penuh() == 0){ queue.tail++; queue.data[queue.tail]=a; cout<<"Data "<<queue.data[queue.tail]<<" masuk ke queue [enter]"; } else cout<<"queue penuh"; } void hapus(){ int x=queue.head+1; if(kosong() == 0){ while(x<=queue.tail){ queue.data[x-1]=queue.data[x]; x++; } cout<<"Data sudah terambil"; queue.tail--; } else cout<<"Data kosong"; } void tampil(){ if (kosong() == 0){ for (int i=queue.head; i<=queue.tail; i++){ cout<<endl<<"Queue ke-"<<i<<" : "<<queue.data[i]; } } else cout<<endl<<"queue kosong"; } void bersih(){ queue.tail = -1; cout<<endl<<"queue kosong"; } void main(){ int menu, nilai; awal(); do{ clrscr(); cout<<"-- QUEUE --"<<endl<<endl; cout<<"1. Enqueue"<<endl; cout<<"2. Dequeue"<<endl; cout<<"3. Tampil"<<endl; cout<<"4. Destroy"<<endl; cout<<"5. Keluar"<<endl; cout<<"__________________"<<endl<<endl; cout<<"masukan fungsi : "; cin>>menu; switch (menu){ case 1: clrscr(); cout<<"-- ENQUEUE --"<<endl<<endl; cout<<"Masukkan data : "; cin>>nilai; input(nilai); break; case 2: clrscr(); cout<<"-- DEQUEUE --"<<endl<<endl; hapus(); break; case 3: clrscr(); cout<<"-- QUEUE --"<<endl; tampil(); break; case 4: bersih(); break; case 5: cout<<endl<<"Tekan enter untuk keluar "; } getch(); } while(menu != 5); }