Senin, 11 Maret 2019

Queue


QUEUE (ANTRIAN)


      A.     Pengertian  Queue (Antrian)
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front) Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out). Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.

        Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear).


    B. Karakteristik Queue atau antrian
      Queue memiliki beberapa karaakteristik yaitu:
1. elemen antrian 
 2. front (elemen terdepan antrian) 
3. tail (elemen terakhir) 
 4. jumlah elemen pada antrian 



C.Perbedaan Queue dan Stack.
1.      Sementara Queue memakai siste FIFO atau first in first out (yang pertama masuk akan keluar pertama, begitu pula yang masuk terakhir akan keluar terakhir) yang apabila kita menghapus / mengeluarkan data, maka data yang pertamalah yang akan terhapus/ keluar terdahulu dan data yang terakhir akan terhapus/ keluar terakhir.
2.       Stack memakai sistem LIFO atau last in first out (yang pertama masuk akan keluar terakhir, begitu pula yang terakhir masuk akan keluar pertama kali) yang apabila kita mengahapus/ keluar data, maka data yang terakhirlah yang akan terhapus/ keluar terlebih dahulu.

 

D. Manfaat  Queue   
     Queue memiliki manfaat yaitu :
        1.       Digunakan sistem operasi untuk mengatur eksekusif task da) lam suatu  sistem untuk mencapai pelakuan yang adil.
         2.       Untuk milbox  dalam komunikasi antar proses
         3.        Untuk buffer dalam mekanisme priinstpoler komunikasi data
         4.       Untuk simulasi dan modeling ( misalnya sistem modeling pengendalian 
         5.       lalu lintas udara )
         6.       Simulasi antar dunia nyata 

    E. Listing 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);
}



E. Outputnya