Queue
Queue adalah Suatu kumpulan data dimana penambahan data atau elemnnya dilakukan di belakang
sedangkan kalo mau hapusnya dilakukan dari sisi depan ( FIFO )
contoh :
front rear
Q1 , Q2 , Q3 , Q4
istilah istilah di Queue
1. Elemen depan = front
2. Elemen belakang = rear
3. Fifo = data yang pertama kali masuk , yang paling pertama juga keluar.
4. Enqueue = proses buat nambah data baru di belakang
5. Dequeue = proses buat hapus data/ ambil data di depan
Perbedaan Stack sama Queue adalah
Kalo stack itu sifatnya LIFO , kalo queue sifatnya FIFO .
Kalo stack pake istilah bottom sama top . kalo queue pake istilah front dan rear
implementasi source code :
– struct :
struct data{
char bil[10];
struct data *next,*prev;
};
– function tambah data di belakang
void tambahdata(data **front,char input[], data **rear){
data *baru;
data *curr;
printf(“New Data Insert\n”);
baru = (struct data*) malloc (sizeof(data));
strcpy(baru -> bil, input);
baru->next=NULL;
if(*front == NULL){
*front=baru;
*rear=baru;
}
else{
curr=*front;
while(curr->next!=NULL){
curr=curr->next;
}
curr->next=baru;
}
getch();
}
– function menampilkan data yang sudah di input
void tampildata(data **rear){
data *temp;
temp = *rear;
if(*rear == NULL){
printf(“Stack is Empty\n”);
}
else {
while(temp != NULL){
printf(“%s “, temp -> bil);
temp = temp -> next;
}
printf(“\n”);
}
}
– Function dequeue
void dequeue(data **front){
data *curr;
if(front==NULL){
printf(“Queue is Empty”);
}
else{
curr=*front;
printf(“Pooped : %s \n”,curr->bil);
*front=(*front)->next;
free(curr);
}
}
– Function top
void frontt(data **rear){
struct data *var=*rear;
if(var!=NULL){
printf(“%s”,var->bil);
printf(“\n”);
}
else{
printf(“\nQueue is Empty”);
}
}
– Function cek data apakah kosong atau tidak
void cek(data **rear){
struct data *temp, *var=*rear;
if(var != NULL){
printf(“Queue is Empty\n”);
}
else{
printf(“Queue is Not empty”);
}
}