ANTRIAN DENGAN ARRAY
Pengertian
Antrian (Queue) dapat diartikan sebagai suatu kumpulan data
yang seolah-olah terlihat seperti ada data yang diletakkan di sebelah data yang
lain seperti pada gambar 01. Pada gambar, data masuk melalui lorong di sebelah
kanan dan masuk dari terowongan sebelah kiri. Hal ini membuat antrian bersifat
FIFO (First In First Out), beda dengan stack yang berciri LIFO.
Antrian dapat dibuat baik dengan array maupun dengan struct.
Pada pembuatan antrian dengan array, antrian yang disajikan bersifat statis.
Ini disebabkan oleh jumlah maksimal array sudah ditentukan sejak deklarasi
awal.
Algoritma PUSH
Salah satu algoritma untuk proses memasukkan data (PUSH)
adalah sebagai berikut:
- Masukkan inputan (x)
- Jika variabel cek = max (Nilai maksimal array), kerjakan langkah 2. Jika tidak, kerjakan langkah 3.
- Cetak “ANTRIAN PENUH” lalu selesai.
- Selama cek kurang dari max, maka c ß c +1 dan data [c] ß x.
Algoritma POP
Salah satu algoritma untuk proses mengeluarkan data (POP)
adalah sebagai berikut:
- Jika cek = 0, cetak “ANTRIAN KOSONG” kemudian selesai. Jika tidak, lakukan langkah 2.
- mulai x=0, selama x kurang dari cek, lakukan langkah 2 dan 3.
- data[x] ß data [x+1].
- data[cek-1] ß NULL.
- cek ß cek – 1
Contoh program yang
mengimplementasikan algoritma di atas :
#include<stdio.h>
#include<conio.h>
void main()
{
int cek=0, data[20], x, hapus, v, z;
char pil;
do
{
clrscr();
printf("1. tambah antrian\n");
printf("2. hapus antrian\n");
printf("3. lihat antrian\n");
printf("4. keluar\n");
printf("silahkan masukkan pilihan anda.. ");
pil = getche();
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
printf("\n\nanda salah mengetikkan inputan... \n");
else
{
if(pil=='1') /* push */
{
if(cek==20)
printf("\nantrian penuh\n\n");
else
{
printf("\nmasukkan nilai --> "); scanf("%i", &x);
data[cek]=x;
cek++;
}
}
else
{
if(pil=='2') /* pop */
{
if(cek==0)
printf("\nantrian kosong\n\n");
else
{
hapus=data[0];
for(v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL
;
cek--;
printf("\ndata dengan nilai=%i terhapus.", hapus);
}
getch();
}
else
{
if(pil=='3') /* cek data */
{
if(cek==0)
printf("\nantrian kosong.\n\n");
else
{
printf("\n");
for(z=0; z<cek; z++)
{
printf(" | ");
printf("%i", data[z]);
printf(" | ");
}
}
getch();
}
}
}
}
}
while(pil!='4');
}

#include<conio.h>
void main()
{
int cek=0, data[20], x, hapus, v, z;
char pil;
do
{
clrscr();
printf("1. tambah antrian\n");
printf("2. hapus antrian\n");
printf("3. lihat antrian\n");
printf("4. keluar\n");
printf("silahkan masukkan pilihan anda.. ");
pil = getche();
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
printf("\n\nanda salah mengetikkan inputan... \n");
else
{
if(pil=='1') /* push */
{
if(cek==20)
printf("\nantrian penuh\n\n");
else
{
printf("\nmasukkan nilai --> "); scanf("%i", &x);
data[cek]=x;
cek++;
}
}
else
{
if(pil=='2') /* pop */
{
if(cek==0)
printf("\nantrian kosong\n\n");
else
{
hapus=data[0];
for(v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL
;
cek--;
printf("\ndata dengan nilai=%i terhapus.", hapus);
}
getch();
}
else
{
if(pil=='3') /* cek data */
{
if(cek==0)
printf("\nantrian kosong.\n\n");
else
{
printf("\n");
for(z=0; z<cek; z++)
{
printf(" | ");
printf("%i", data[z]);
printf(" | ");
}
}
getch();
}
}
}
}
}
while(pil!='4');
}
No comments:
Post a Comment