Skip to content

Instantly share code, notes, and snippets.

@rmsubekti
Created December 14, 2016 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rmsubekti/fb92c54398fb197a7261da3305ca5711 to your computer and use it in GitHub Desktop.
Save rmsubekti/fb92c54398fb197a7261da3305ca5711 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <stdlib.h>//system()
#include <conio.h>//getch()
#define MAX 20 //maksimum data queue
using namespace std;
//Deklarasi struct antrian
struct queue {
int head, tail, data[MAX];
}Q;
//11.12.5800
//cek apakah antrian penuh
bool isFull() {
//return Q.tail == MAX ? true : false;
return Q.tail == MAX; //GOTCHA!!
}
//cek apakah antrian kosong
bool isEmpty() {
return Q.tail == 0;
}
//Menampilkan Queue
void print() {
if (!isEmpty()) {
cout << "QUEUE : ";
for (int i = Q.head; i < Q.tail; i++)
//print data menggunakan ternary operator
//menambahkan koma jika data tidak terdapat di antrian pertama
//cout << Q.data[i] << Q.tail - 1 == i ? "" : ",";
cout << Q.data[i] << ((Q.tail - 1 == i) ? "" : ","); //GOTCHA!!
cout << endl;
}
else cout << "Antrian kosong";
}
//manambahkan data ke antrian
void enqueue() {
if (!isFull())
{
int data;
//menambahkan data ke antrian
cout << "Masukkan Data : ";cin >> data;
Q.data[Q.tail] = data;
//menempatkan tail pada elemen data terakhir yang ditambahkan
Q.tail++;
cout << "Data ditambahkan\n";
print();
}
else cout << "Antrian penuh!";
}
// mengambil data dari antrian
void dequeue() {
if (!isEmpty())
{
cout << "Mengambil data \"" << Q.data[Q.head] << "\"..." << endl;
//menggeser antrian data ke head
for (int i = Q.head; i < Q.tail; i++)
Q.data[i] = Q.data[i + 1];
//menempatkan tail pada data terakhir yang digeser
Q.tail--;
print();
}
else cout << "Antrian kosong";
}
int main() {
int choose;
do
{
system("cls"); //hanya di windows
//Tampilan menu
cout << "-------------------\n"
<< " Menu Pilihan\n"
<< "-------------------\n"
<< " [1] Enqueue \n"
<< " [2] Dequeue\n"
<< " [3] Tampil \n"
<< " [4] Keluar \n\n"
<< "-------------------\n"
<< "Masukkan pilihan : "; cin >> choose;
switch (choose)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
print();
break;
default:
cout << "Pilihan tidak tersedia";
break;
}
cout << "\nPress Any key to continue...";
getch();
} while (choose !=4);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment