1.
perbedaan
antara queue dengan stack
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.
§ 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
§ Guna counter pada rangkaian stack dan
queue adalah untuk menentukan apakah stack atau queue tersebut sudah full atau
masih empty.
2.
contoh
program dari Queue.
uses crt;
var
queue:array[1..10] of integer;
i,pos,pil:integer;
queue:array[1..10] of integer;
i,pos,pil:integer;
procedure enqueue;
var
bil:integer;
begin
clrscr;
if (pos>=10) then
begin
writeln(‘Antrean penuh’); readln();
end
else
begin
write(‘Masukkan bilangan : ‘);readln(bil);
pos:=pos+1;
queue[pos]:=bil;
end;
end;
var
bil:integer;
begin
clrscr;
if (pos>=10) then
begin
writeln(‘Antrean penuh’); readln();
end
else
begin
write(‘Masukkan bilangan : ‘);readln(bil);
pos:=pos+1;
queue[pos]:=bil;
end;
end;
procedure deque;
begin
clrscr;
if (pos=0) then
begin
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada
Antrean’);readln();
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
procedure empty;
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
writeln(‘Tidak ada
Antrean’);readln();
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
procedure empty;
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
else
begin
l:=1;
for k:=pos downto 1 do
begin
gotoxy(k*3,1);
write(queue[l]);
l:=l+1;
end;
readln();
end;
end;
begin
l:=1;
for k:=pos downto 1 do
begin
gotoxy(k*3,1);
write(queue[l]);
l:=l+1;
end;
readln();
end;
end;
begin
clrscr;
{inisialisasi queue}
for i:=1 to 10 do
begin
queue[i]:=-1;
end;
{posisi awal queue}
pos:=0;
{pilihan menu queue}
while (pil<>5) do
begin
textbackground(blue);
textcolor(white);
clrscr;
writeln(‘MENU PILIHAN QUEUE ‘);
writeln(‘================== ‘);
writeln(‘1. ENQUEUE ‘);
writeln(‘2. DEQUE ‘);
writeln(‘3. Kosongkan QUEUE ‘);
writeln(‘4. Lihat QUEUE ‘);
writeln(‘5. Selesai ‘);
write(‘Pilihan Anda :’); readln(pil);
case pil of
1: enqueue();
2: deque();
3: empty();
4: display();
end;
end;
end.
clrscr;
{inisialisasi queue}
for i:=1 to 10 do
begin
queue[i]:=-1;
end;
{posisi awal queue}
pos:=0;
{pilihan menu queue}
while (pil<>5) do
begin
textbackground(blue);
textcolor(white);
clrscr;
writeln(‘MENU PILIHAN QUEUE ‘);
writeln(‘================== ‘);
writeln(‘1. ENQUEUE ‘);
writeln(‘2. DEQUE ‘);
writeln(‘3. Kosongkan QUEUE ‘);
writeln(‘4. Lihat QUEUE ‘);
writeln(‘5. Selesai ‘);
write(‘Pilihan Anda :’); readln(pil);
case pil of
1: enqueue();
2: deque();
3: empty();
4: display();
end;
end;
end.
3.
contoh
Queue yang Anda terapkan dalam kehidupan sehari – hari.
Contohnya yaitu
antrian pada kasir pada sebuah
bank. Ketika seorang pelanggan datang, akan menuju ke belakang dari antrian.
Setiap pelanggan dilayani, antrian yang berada di depan akan maju. Jika kita
ada di antrian kedua, maka kita akan menunggu antrian pertama melakukan
prosesnya
Nah, ketika selesai proses dari antrian pertama dia akan pergi, dan
giliran kita untuk maju untuk melakukan proses. Begitu juga arti dari antrian
dalam bahasan kali ini, jika pengantri pertama datang maka dia juga yang akan
keluar pertama kali atau bahasa kerennya tu FIFO ( First In First Out ).
Kondisi antrian yang menjadi
perhatian :
Ò Penuh
Bila elemen pada antrian mencapai
kapasitas maksimum antrian, maka tidak mungkin dilakukan penambahan ke antrian.
Penambahan elemen menyebabkan kondisi kesalahan overflow
Ò Kosong
Bila tidak ada elemen pada antrian,
maka tidak mungkin dilakukan pengambilan elemen dari antrian. Pengambilan
elemen menyebabkan kondisi kesalahan overflow
4.
konsep
dari operasi – operasi Queue.
Fungsi
IsEmpty
berguna untuk mengecek apakah queue masih
kosong atau sudah berisi data. hal ini dilakukan dengan mengecek apakah tail
bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.
• IsFull
Fungsi IsFull berguna untuk mengecek
apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek
apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya
sama, berarti queue sudah penuh.
• EnQueue
Fungsi EnQueue berguna untuk
memasukkan sebuah elemen dalam queue.
• DeQueue
Fungsi DeQueue berguna untuk
mengambil sebuah elemen dari queue. Operasi ini sering disebut juga serve. Hal
ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya
sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang
terletak di belakangnya.
• Clear
Fungsi Clear berguna untuk menghapus
semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu
per satu hingga queue kosong dengan memanfaatkan fungsi DEQueue.
5.
kondisi
yang harus diperhatikan dalam operasi – operasi Queue
6.
Operasi-operasi
dasar dari sebuah queue adalah :
1.Enqueue : proses penambahanelemen di posisibelakang
2.Dequeue : proses pengambilanelemen di posisidepan
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu :
1.CREATE (Q) Operator yang menunjukkan suatu antrean hampa Q.
Berarti : Noel (Q) = 0
Front (Q) & Rear (Q) = tidak terdefinisi
2.Dequeue : proses pengambilanelemen di posisidepan
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu :
1.CREATE (Q) Operator yang menunjukkan suatu antrean hampa Q.
Berarti : Noel (Q) = 0
Front (Q) & Rear (Q) = tidak terdefinisi
2.ISEMPTY (Q)
Operator yang menunjukkan apakah antrean Q hampa.
Operand : tipe data antrean
Hasil : tipe data boolean
ISEMPTY (CREATE (Q)) = True
3.INSERT (E, Q) Operator yang menginsert elemen E ke dalam antrean Q.
Operand : tipe data antrean
Hasil : tipe data boolean
ISEMPTY (CREATE (Q)) = True
3.INSERT (E, Q) Operator yang menginsert elemen E ke dalam antrean Q.
E ditempatkan di bagian belakang antrean.
Hasil : antrean yang lebih besar.
REAR (INSERT (E, Q)) = E
ISEMPTY (INSERT (E, Q)) = False
4.REMOVE
(Q)Operator yang menghapus elemen bagian depan dari antrean Q.
Hasil : antrean yang lebih pendek.
Pada setiap operasi, Noel (Q) berkurang 1 dan elemen ke-2 menjadi elemen terdepan.
Jika Noel (Q) = 0 maka Q = hampa
Remove (Q) = kondisi error (underflow condition)
Remove (Create (Q)) = kondisi error (underflow condition)
Hasil : antrean yang lebih pendek.
Pada setiap operasi, Noel (Q) berkurang 1 dan elemen ke-2 menjadi elemen terdepan.
Jika Noel (Q) = 0 maka Q = hampa
Remove (Q) = kondisi error (underflow condition)
Remove (Create (Q)) = kondisi error (underflow condition)
Tidak ada komentar:
Posting Komentar