STRUKTUR DATA
DAN ALGORITME
MODUL VIII
“QUEUE”
Disusun oleh :
Muhamad Taufiq Hidayat
21102206
Dosen Pengampu :
Muhammad Afrizal Amrustian, S. Kom., M. Kom
Introduction
Selamat datang pada bagian 5 dari seri pengenalan Struktur Data. Bagian 4
dari seri ini mengenai List Berkait Ganda dapat dilihat disini) , dan overview
Algoritma dan Struktur Data dapat dilihat disini . Pada bagian ini, saya akan
mendalami struktur data Queue.
https://kotakode.com/blogs/4468/Mengenal-Struktur-Data---5%3A-Queue
BAB III
• GUIDED
1. Guided 1
#include <iostream>
using namespace std;
//queue array
int maksimalQueue = 5;//maksimal antrian
int front = 0;//penanda antrian
int back = 0;//penanda
string queueTeller[5];
//fungsi pengecekan
bool isFull(){//pengecekan antrian penuh atau tidak
if(back == maksimalQueue){
return true;//=1
}else{
return false;
}
}
//fungsi pengecekan
bool isEmpty(){//antriannya kosong atau tidak
if(back==0){
return true;
}else{
return false;
}
}
//fungsi menambahkan antrian
void enqueueAntrian(string data){
if(isFull()){
cout << "antrian penuh"<<endl;
}else{//nested if, nested for
if(isEmpty()){//kondisi ketika queue kosong
queueTeller[0]=data;
front++;//front = front +1;
back++;
}else{//antrianya ada isi
queueTeller[back]=data;//queueTeller[1]=data
1
back++;//back=back+1; 2
}
}
}
//fungsi mengurangi antrian
void dequeueAntrian(){
if(isEmpty()){
cout << "antrian kosong"<<endl;
}else{
for(int i=0; i<back; i++){
queueTeller[i]=queueTeller[i+1];
}back--;
}
}
//fungsi menghitung banyak antrian
int countQueue(){
return back;
}
//fungsi menghapus semua antrian
void clearQueue(){
if(isEmpty()){
cout << "antrian kosong"<<endl;
}else{
for(int i=0; i<back; i++){
queueTeller[i]="";
}
back=0;
front=0;
}
}
//fungsi melihat antrian
void viewQueue(){
cout << "data antrian teller : "<<endl;
for(int i =0; i<maksimalQueue; i++){
if(queueTeller[i]!=""){
cout << i+1 << ". " <<queueTeller[i]<<endl;
}else{
cout << i+1 << ". (kosong)" <<endl;
}
}
}
2
int main()
{
enqueueAntrian("Andi");
enqueueAntrian("Maya");
viewQueue();
cout << "jumlah antrian = " << countQueue()<<endl;
dequeueAntrian();
viewQueue();
cout << "jumlah antrian = " << countQueue()<<endl;
clearQueue();
viewQueue();
cout << "jumlah antrian = " << countQueue()<<endl;
return 0;
}
Seperti itulah
3
• UNGUIDED
Unguided 1
Ubahlah penerapan konsep queue pada bagian guided dari array menjadi linked list
Code
#include <iostream>
using namespace std;
// array Antrian
int maksimalAntrianArray = 5, front = 0, back = 0;
string nama;
int umur;
// ruang antrian array
string antrianAtm[5];
// siapin ruang antrian
struct antrianAtmLL{
// data / member
string nama;
int umur;
// pointer next
antrianAtmLL *next;
}*head, *tail, *cur, *del, *newNode;
int maksimalAntrianLinkedList = 5;
void init()
{
head = NULL;
tail = NULL;
}
// isFull / cek data antrian penuh atau tidak
bool isFullArray()
{
if( back == maksimalAntrianArray ){
return true;
}else{
return false;
}
}
4
// isEmpty
bool isEmptyArray()
{
if( back == 0 ){
return true;
}else{
return false;
}
}
if( isFullArray() ){
cout << "Antrian penuh!!" << endl;
}else{
// cek apakah datanya kosong atau tidak
if( isEmptyArray() ){
// kalau antrian kosong
antrianAtm[0] = data;
front++;
back++;
}else{
// kalo gak kosong
antrianAtm[back] = data;
back++;
}
}
5
// countArray / menghitung banyak data yg ngantri
int countArray()
{
if( isEmptyArray() ){
return 0;
}else if( isFullArray() ){
return maksimalAntrianArray;
}else{
return back;
}
// destroy / clear
void destroyArray(){
if( isEmptyArray() ){
cout << "Antrian kosong!!" << endl;
}else{
for( int i = 0; i < maksimalAntrianArray; i++ ){
}
}
}
// Display / View
void viewArray()
{
cout << "Jumlah data yg ngantri : " << countArray() << "data." << endl;
cout << "Data Antrian Atm : " << endl;
if( isEmptyArray() ){
cout << "Antrian kosong!!" << endl;
}else{
6
for( int i = 0; i < maksimalAntrianArray; i++ ){
// cek apakah ruang kosong atau tidak
if( antrianAtm[i] != "" ){
// kalau ruang tidak kosong
cout << i+1 << ". " << antrianAtm[i] << endl;
}else{
// kalo kosong
cout << i+1 << ". (kosong)" << endl;
}
}
}
cout << "\n" << endl;
}
7
// isEmpty Linked List
bool isEmptyLinkedList()
{
if( countLinkedList() == 0 ){
return true;
}else{
return false;
}
}
// enqueue / penambahan
void enqueueLinkedList( string nama, int umur ){
if( isFullLinkedList() ){
cout << "Antrian Penuh!!!" << endl;
}else{
if( isEmptyLinkedList() ){
8
head = head->next;
del->next = NULL;
delete del;
}
}
// destroy / clear
void clearLinkedList()
{
if( isEmptyLinkedList() ){
cout << "Data Antrian Kosong!!" << endl;
}else{
cur = head;
while( cur != NULL ){
del = cur;
cur = cur->next;
del->next = NULL;
delete del;
}
head = NULL;
tail = NULL;
}
}
9
nomor++;
}
int main()
{
char ulang;
int menu;
do{
system("cls");
cout << "1. Tambah "<<endl;
cout << "2. Hapus " <<endl;
cout << "3. Reset " <<endl;
cout << "4. Tampil " <<endl;
cout << "0. Exit "<<endl;
//char ulang;
cout << "Pilih menu ";
cin >> menu;
switch(menu){
case 0:
return 0;
system("cls");
break;
init();
case 1:
system("cls");
cout << "Masukkan Nama kamu ";
cin >> nama;
10
cout << "Umur kamu ";
cin >> umur;
enqueueLinkedList(nama, umur);
// menu();
break;
case 2:
system("cls");
dequeueLinkedList();
break;
case 3:
system("cls");
clearLinkedList();
break;
case 4:
system("cls");
displayLinkedList();
break;
;
default:
cout << "Di Luar menu ";
break;
}
cout <<"Maau mengulang ";
cin>> ulang;
}while(ulang == 'y');
return 0;
}
1. Tamilan awal
11
Menampilkan menu
2. Tambah Data
12
Sata menulis nama Panjang dengan getline
3. Hapus data
4. Menampilkan data
13
5. Reset data
6. Keluar
14
15
BAB IV
‘KESIMPULAN’
Dari materi ini menjelaskan ap aitu queue atau yang di sebut antrian jadi
antrian ini kebalikan dari stack