Queue / Antrian adalah suatu kumpulan data
yang mana penambahan elemen hanya bisa dilakukan pada satu ujung (disebut
dengan sisi belakang atau rear) dan penghapusan atau pengambilan elemen
dilakukan lewat ujung lain (disebut dengan sisi depan atau 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.
Saya
buat sebuah program untuk memasukkan, menghapus, dan mencetak suatu
antrian data yang berupa sting dengan menggunakan queue
source code;
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#define MAX 10
typedef struct
{
char data[MAX];
char head;
char tail;
} Queue;
Queue antrian;
void Create()
{
antrian.head=antrian.tail=-1;
}
char IsEmpty()
{
if(antrian.tail==-1)
return 1;
else
return 0;
}
char IsFull()
{
if(antrian.tail==MAX-1) return 1;
else return 0;
}
void Enqueue(int data)
{
if(IsEmpty()==1)
{
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
cout<<"Data
"<<antrian.data[antrian.tail]<<" Masuk!!";
}
else if(IsFull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
cout<<"Data
"<<antrian.data[antrian.tail]<<" Masuk!!";
}
else if (IsFull() == 1)
{
cout<<"Maaf,
penuh"<<endl;
cout<<data<<" Data tidak
masuk";
}
}
void Dequeue()
{
char i;
char e = antrian.data[antrian.head];
if (antrian.tail == -1)
{
cout<<"Data
Kosong"<<endl;
}
else
{
for(i=antrian.head;i<=antrian.tail-1;i++)
{
antrian.data[i] = antrian.data[i+1];
}
antrian.tail--;
cout<<"Data yang Keluar lebih dulu =
"<<e<<endl;
}
}
void Clear()
{
antrian.head=antrian.tail=-1;
cout<<"Data
dihapus"<<endl;
}
void Tampil()
{
if(IsEmpty()==0)
{
cout<<"Data Dalam
Antrian"<<endl;
cout<<"==========================="<<endl;
cout<<endl;
for(char i=antrian.head;i<=antrian.tail;i++)
{
cout<<"|
"<<antrian.data[i]<<" |";
}
}
else cout<<"Data Kosong";
}
void main()
{
int pil;
char data;
Create();
do
{
clrscr();
cout<<"Queue data berupa
String"<<endl;
cout<<"=================================="<<endl;
cout<<endl;
cout<<"1. Masukkan
data"<<endl;
cout<<"2. Hapus
data"<<endl;
cout<<"3. Cetak"<<endl;
cout<<"4. Hapus
semua"<<endl;
cout<<"5. Keluar"<<endl;
cout<<"Pilihan Anda= ";
cin>>pil;
switch(pil)
{
case 1:
{
cout<<endl;
cout<<"Data = ";
cin>>data;
Enqueue(data);
break;
}
case 2:
{
cout<<endl;
Dequeue();
break;
}
case 3:
{
cout<<endl;
Tampil();
break;
}
case 4:
{
cout<<endl;
Clear();
break;
}
}
getch();
} while(pil!=5);
}
tampilan
0 komentar:
Posting Komentar