Selasa, 18 November 2008

Struktur Data: Queue

Queue (Antrian) adalah Suatu kumpulan data dimana penambahan elemen hanya bisa dilakukan pada suatu ujung (rear) dan pengambilan elemen dilakukan lewat ujung yang lain (front).
Tumpukan menggunakan metode yang disebut FIFO (First In First Out) yaitu Masuk pertama keluar pertama.

Pendeklarasian Antrian

Const MaxElemen = 100;
Type Antri = array[1.. MaxElemen] of char;
Var Antrian : Antri;
Depan, Belakang: Integer;

Operasi Penambahan Elemen

Procedure TAMBAH(var Q: Antri; X: char);
Begin
If Belakang := Max_Elemen then
Belakang := 1
Else
Belakang := Belakang + 1;
If Depan = Belakang then
Writeln(’ANTRIAN PENUH’)
Else
Q[Belakang];
end;

Operasi Penghapusan Elemen

Sebelumnya buat Fungsi untuk mencek apakah antrian dalam keadaan kosong atau terisi

Procedure KOSONG(Q : Antri): Boolean;
Begin
Kosong := (Depan = Belakang)
End;

Procedure HAPUS(Var Q:Antri): char;
Begin
If KOSONG(Q) then
Writeln (‘ANTRIAN KOSONG’)
Else
Begin
HAPUS := Q(Depan);
If Depan := Max_Elemen then
Depan := 1
Else
Depan := Depan + 1;
End;
End;

Contoh Pemakaian Program Antrian

program ILUSTRASI_ANTRIAN;
uses wincrt;
const Max_Elemen = 10;
Type Antri = Array[1..Max_Elemen] of char;
var Antrian : Antri;
Depan, Belakang, Pilih : integer;
Elemen : char;

procedure KOTAK;
var I : integer;
begin
gotoxy(20,15);
for i := 1 to Max_Elemen*4 + 1 do write ('');
gotoxy(20,16);
for i := 1 to max_elemen do write('');

for i := 1 to max_elemen*4 + 1 do
write(' ');
gotoxy(8,16); write('<----KELUAR');
gotoxy(22+Max_Elemen*4+1,16);
writeln('<----MASUK');
end;

procedure LETAKKAN(X:char; R:integer);
begin
gotoxy(18+4*R,16);
write(X);
end;

function KOSONG(Q:Antri):Boolean;
begin
Kosong := (Depan=Belakang);
end;

procedure TAMBAH(var antrian:antri; x:char);
begin
if belakang = max_elemen then belakang := 1
else belakang := belakang + 1;

if not(KOSONG(Antrian)) then
begin
Antrian[Belakang]:=X;
LETAKKAN(X,Belakang)
end
else
begin
gotoxy(40,9);
write('ANTRIAN SUDAH PENUH');
repeat
until keypressed;

gotoxy(40,9);
write(' ':30);
Belakang:= Belakang-1;
if belakang = 0 then
belakang:= max_elemen;
end;
end;

function HAPUS(var antrian:antri): char;
begin
if depan = max_elemen then
depan := 1
else
begin
depan:=depan+1;
HAPUS:=antrian[depan];
end;
end;

{PROGRAM UTAMA}
begin
clrscr;
KOTAK;
depan:=0; belakang:=0;
repeat
for pilih := 5 to 9 do
begin
gotoxy(40,pilih);
write(' ':39);
end;
gotoxy(1,1);
writeln('DAFTAR MENU ANTRIAN: ');
writeln('-------------------- ');
writeln;
writeln('1. Menambah Elemen Baru');
writeln('2. Menghapus Elemen');
writeln('3. S E L E S A I');
writeln;
writeln;
writeln('PILIH SALAH SATU');
repeat
gotoxy(22,9);writeln(' ');
gotoxy(22,9);readln(pilih);
until (pilih >= 1) and (pilih <= 3);
case pilih of
1 : begin
gotoxy(40,5);
writeln('MENAMBAH ELEMEN');
gotoxy(40,6);
writeln('---------------');
gotoxy(40,8);
write('ISIKAN ELEMENNYA: ');
readln(Elemen);
TAMBAH(Antrian,Elemen);
end;

2 : Begin
if not (KOSONG(antrian)) then
begin
Elemen:=HAPUS(antrian);
LETAKKAN(' ',Depan)
end
else
begin
gotoxy(30,9);
writeln('ANTRIAN KOSONG');
elemen:=readkey;
gotoxy(30,9); write(' ':30);
end
end
end
until pilih =3
end.

3 komentar:

Anonim mengatakan...

Trims ibu dosen..., kalo boleh saya panggil ibu Vi2x aja ya..

Kebetulan saya lagi nyari modul untuk mata kuliah struktur data mengenai queue dan stack. Dan ternyata...ketemu di blog ibu.

skali lagi makasih bu vi2x....

Wildan mengatakan...

Salam Kenal Ibu Dosen, Maaf kalo saya mengganggu pengisian komentar anda tentang Modul tersebut. Saya hanya membantu/memberitahukan kepada ibu Dosen, bagaimana caranya memotong suatu artikel agar tidak panjang kebawah. Kecuali disengaja, hal itu no comentar he he..!. Kalo Ibu Dosen butuh silahkan ibu hubungi saya di E-mail bani_um@ymail.com.Trims

Salam Kenal

Bang Wil
http://beligentbisnis.blogspot.com

Yuk Shalat Tahajud mengatakan...

trimakasih bu....

kalo beleh tau itu pake bahasa pemrograman apa bu...