Anda di halaman 1dari 4

Modul Praktikum Struktur Data

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.

A B C D E F
F
Gambar 01

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:
0. Masukkan inputan (x)
1. Jika variabel cek = max (Nilai maksimal array), kerjakan langkah 2. Jika tidak, kerjakan
langkah 3.
2. Cetak “ANTRIAN PENUH” lalu selesai.
3. 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:
0. Jika cek = 0, cetak “ANTRIAN KOSONG” kemudian selesai. Jika tidak, lakukan langkah 2.
1. mulai x=0, selama x kurang dari cek, lakukan langkah 2 dan 3.
2. data[x]  data [x+1].
3. data[cek-1]  NULL.
4. 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;
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();

Disusun oleh: TIM Asisten Struktur Data


Modul Praktikum Struktur Data

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(int v=0;v<cek;v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
printf("\nData dgn nilai=%i terhapus.",hapus);
}
getch();
}
else
{
if(pil=='3') //CEK DATA
{
if(cek==0)
printf("\nAntrian Kosong.\n\n");

else
{
printf("\n");
for(int z=0;z<cek;z++)
{
printf(" | ");
printf("%i",data[z]);
printf(" | ");
}

}
getch();
}
}
}
}

}while(pil!='4');
}

Disusun oleh: TIM Asisten Struktur Data


Modul Praktikum Struktur Data

Antrian

Antrian disebut juga queue. Sebagaiman stack, antrian terdiri dari elemen-elemen yang menempati suatu arary
atau list dan dapat dimasukkan atau dikeluarkan dengan cara tertentu. bila pada stack elemen yang pertama yang keluar
adalah elemen yang terakhir masuk, maka pada queue elemen yang pertama keluar adalah elemen yang pertama kali
masuk. Maka dikatakan FIFO (first in first out). Banyak sekali contoh antrian yang dapat kita temukan dalam kehidupan
sehari-hari. Antrian orang yang akan mengambil uang di bank, antrian pendaftaran mahasiswa, antrian di lampu lalu
lintas, antrian pesawat yang akan landing atau take off dan sabagainya. Struktur data antrian dapat menggunakan array
dan dapat juga menggunakan doubly-linked list.

Contoh 11.1
{ demonstrasi antrian }
Program P015;
uses crt;
var dataqueue: array[1..11] of integer;
tempqueue: array[1..11] of integer;
maxqueue : integer;
jawab:char;
procedure come;
begin
clrscr;
if maxqueue=10 then
write('Antrian sudah Penuh !!!')
else
begin
write('Masukan Satu Angka : ');
readln(tempqueue[maxqueue]);
dataqueue[maxqueue]:=tempqueue[maxqueue];
maxqueue:=maxqueue+1;
write('Jumlah antrian sekarang : ',maxqueue-1);
end;
readln;
end;
procedure take;
var i:integer;
begin
clrscr;
if maxqueue=1 then
write('Antrian Masih Kosong !!!')
else
begin
maxqueue:=maxqueue-1;
for i:=1 to maxqueue do
begin
dataqueue[i]:=tempqueue[i+1];
end;
for i:=1 to maxqueue do
begin
tempqueue[i]:=dataqueue[i];
end;
write('Jumlah antrian sekarang : ',maxqueue-1);
end;
readln;
end;
procedure look;
var i:integer;

Disusun oleh: TIM Asisten Struktur Data


Modul Praktikum Struktur Data

begin
clrscr;gotoxy(2,1);
for i:=1 to 12 do
begin
write('Ä');
end;gotoxy(2,3);
for i:=1 to 12 do
begin
write('Ä');
end;gotoxy(2,2);
for i:=1 to maxqueue-1 do
begin
write(dataqueue[i]);
end;
readln;
end;
begin
jawab:='0'; maxqueue:=1;
repeat
clrscr;
writeln('SIMULASI QUEUE');
writeln('1. Input Data ke Queue ');
writeln('2. Ambil Data di Queue ');
writeln('3. Lihat Data dari Queue ');
writeln('4. Keluar');
write('Pilihan Anda (1-4) ? ');
readln(jawab);
case jawab of
'1' : come;
'2' : take;
'3' : look;
end;
until jawab='4';
end.

Pengembangan :
1. Buatlah program untuk simulasi antrian registrasi UKDW. Yang tercatat adalah nim
mahasiswa.
2. Kembangkan program tersebut sehingga bisa menyimpan keterangan nim, nama, dan prodi
mahasiswa tersebut.
3. Tambahkan fitur untuk mengetahui urutan antrian dari nim tertentu.

Soal :
Buat pengembangan program dari latihan di atas dengan beberapa fitur :
1. Bisa melihat urutan untuk prodi tertentu ataupun secara keseluruhan.
2. Bisa POP melompati urutan. Jadi misalkan urutan nomor 2 keluar (POP) lebih dulu daripada
urutan pertama.

Disusun oleh: TIM Asisten Struktur Data

Anda mungkin juga menyukai