Antrian (Queue) beserta Algoritmanya

Antrian adalah antrian data yang seolah-olah ada data yang mengantri dari yang terawal  sampai yang terakhir. Suatu metode untuk Input dan hapus di dalam memori komputer. Konsep utama dalam Queue adalah FIFO ( First In First Out ).
Contoh:
1.Azis,
2.Wiyat,
3.Gilbran,
4.Andri,
5.Anggi,
Ket :
Data nomor 1 datang/masuk duluan, data nomor 1 juga yang keluar terlebih dahulu.
Algoritma
  1. Input/tambah data                                                                                                     Jika ada input maka no queue/no antrian yang semula 0 akan tambah 1 demi 1 sampai maksimal   antrian.
  2. Pengambilan data                                                                                                                 Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi antriannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.
CONTOH PROGRAM QUEUE
Begin
Antri:=0;
For I:=1 to 3 do {untuk input}
Begin
Writeln(’masukkan nama ke’,’  ’,i);
Readln(d[i]);
Antri:=antri+1;
End;
For I:=1 to 3 do {untuk Output}
Begin
                Temp:=d[i];
Antri:=antri-1;
End;
Writeln(’hasil var temp=’,temp); {lihat output di var temp setelah pengambilan }
Readln;
End.
Deklarasi
program membuatqueue;
uses crt;
Type
Coba = record
nama    :string;
umur    :integer;
End;
Barang = ARRAY [1..4] of coba;
Var
elemen:coba;
queue:barang;
full,empty:boolean;
pilih,i:integer;
antri:byte;
const max=4;
label 1,2,3;
Awal Program
  1. Memastikan posisi antrian kosong
  2. Element yang diproses belum ada
Mengawali Queue
Procedure create;
Begin
antri:=0;
elemen.nama:=’kosong’;
Inputan
1. Dipastikan antrian belum penuh (memerlukan pengecekan kepenuhan)
2. Menginput satu persatu
Pengecekan Kepenuhan
procedure cekpenuh;
Begin
if antri=max then full:=true else full:=false;
End;
Menambah Data
Procedure push;
Begin
cekpenuh;
If full=false then
Begin
antri:=antri+1;
write(‘nama: ‘);
readln(queue[antri].nama);
writeln;
End
else
writeln(‘maaf antrian sudah penuh tidak bisa menambah lagi’);
End;
Pengambilan
  1. Dipastikan antrian tidak kosong
  2. Pengambilan satu persatu  atau lebih dari satu (optional)
Pengecekan Kekosongan
procedure cekkosong;
Begin
If antri=0 then empty:=true else
empty:=false;
End;
Pengambilan Data
Procedure Pop;
Begin
cekkosong;
If empty=false then
Begin
Elemen.nama:=queue[1].nama;
antri:=antri – 1;
end
else
writeln(‘maaf antrian kosong sudah tidak bisa mengambil lagi’);
for i:=1 to antri do
queue[i]:=queue[i+1];
End;

No comments

Silahkan Berkomentar dengan kata-kata yang baik dan sopan dikarenakan blog ini untuk semua umur. Terimakasih

Powered by Blogger.