Created
December 14, 2016 14:29
-
-
Save rmsubekti/fb92c54398fb197a7261da3305ca5711 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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