Senin, 11 Maret 2019

Algoritma Pemrograman 2 Queue

QUEUE (Antrian)


1. Pengertian Queue
          Queue dapat diartikan sebagai antrian. Queue merupakan kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Eleman yang pertama kali masuk ke dalam queue disebut elemen depan (front/head of queue), sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang (rear/tail of queue).

Ada beberapa istilah yang harus diketahui dalam queue, yaitu:
a.     Head/Front, yaitu elemen terdepan dari queue
b.     Tail/Rear, yaitu elemen terakhir dari queue
c.      Enqueue, yaitu meletakkan sebuah elemen pada Tail/Rear
d.     Dequeue, yaitu menghapus/mengeluarkan elemen pada Head/Front
e.      IsEmpty, yaitu fungsi yang digunakan untuk mengecek apakah queue kosong
f.       IsFull, yaitu fungsi yang digunakan untuk mengecek apakah queue sudah penuh
 
2. Contoh Program
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 5
#include <iostream>

using namespace std;

typedef struct
{
int data [MAX];
int head;
int tail;
}Queue;

Queue antrian;

void Create()
{
antrian.head=antrian.tail=-1;
}

int IsEmpty()
{
if(antrian.tail==-1)
return 1;
else
return 0;
}

int IsFull()
{
if(antrian.tail==MAX-1)
return 1;
else
return 0;
}

void Enqueue(int data)//menginput sebah dta
{
if(IsEmpty()==1)
{
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
printf("%d Data Telah Masuk !",antrian.data[antrian.tail]);

// void Tampil();
// {
// if(IsEmpty()==0)
// {
// for(int i=antrian.head;i<=antrian.tail;i++)
// {
// printf("%d ",antrian.data[i]);
// }
// }
// else
// printf("Data Kosong !\n");
// }
}
else
if(IsFull()==0)
{
antrian.tail=antrian.tail+1;
antrian.data[antrian.tail]=data;
printf("%d masuk !", antrian.data[antrian.tail]);
}
}

int Dequeue()
{
int i;
int e=antrian.data[antrian.head];

for(i=antrian.head;i<=antrian.tail-1;i++)
{
antrian.data[i]=antrian.data[i+1];
}

antrian.tail--;
return e;
}

void Clear()
{
antrian.head=antrian.tail=-1;
printf("Data Clear");
}

void Tampil()
{
if (IsEmpty()==0)
{
for (int i=antrian.head;i<=antrian.tail; i++)
{
printf("%d ",antrian.data[i]);
}
}
else
{
printf("Data Kosong\n");
}
}

int main()
{
int pil;
int data;
Create();

do
{
system("cls");
printf ("\n MENU PILIHAN PROGRAM QUEUE\n");
printf ("1. Enqueue\n");
printf ("2. Dequeue\n");
printf ("3. Tampil\n");
printf ("4. Clear\n");
printf ("5. Keluar\n");
printf ("Masukkan Pilihan Anda : ");
scanf("%d",&pil);

switch(pil)
{
case 1:
printf("Data : ");
scanf("%d",&data);
Enqueue(data);
break;

case 2:
printf("Elemen yang keluar : %d", Dequeue());
break;

case 3:
Tampil();
break;

case 4:
Clear();
break;
case 5:

break;
}
getch();
} while(pil!=5);
}


0 komentar:

Posting Komentar

Cari Blog Ini