Powered by Blogger.

IMPLEMENTASI QUEUE DENGAN CIRCULAR ARRAY


Circular Array adalah suatu array yang dibuat seakan-akan merupakan sebuah lingkaran dengan titik awal(head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih kosong. Gambar berikut menunjukkan model penyajian antrian dengan circular array :

head := 1;
tail := Max_Queue;

Posisi head dan tail pada gambar di atas adalah bebas asalkan saling bersebelahan. Operasioperasi yang terdapat pada circular array tidak berbeda jauh dengan operasi pada linear array. Implementasi dengan array melingkar merupakan model yang tepat untuk mengatasi inefisiensi penggunaan ruang array pada model linear. Array dapat dipandang sebagai sebuah lingkaran. Apabila posisi terakhir dari array sudah digunakan dan posisi pertama dari array sudah tidak digunakan lagi, maka elemen queue berikutnya dapat diletakkan mulai posisi pertama lagi. Untuk mengimplementasikan array melingkar dari sebuah array linear, posisiposisi yang mengelilingi lingkaran diberi nomor dari 1 s.d maks., sama dengan indeks dari array linear. Pergeseran atau kenaikan indeks dilakukan dengan operasi aritmetika modulo (pembagian bilangan bulat). Ketika nilai indeks melebihi maks, maka dimulai lagi dari 1. operasi modulo mirip operasi pada sebuah jam, dengan angka 1 s.d 12. bila kita mengggeser empat jam dari jam 10, maka kita akan mencapai jam 2.

Operasi-operasi queue dengan circular array :

1. Create
Procedure Create berguna untuk menciptakan Queue yang baru dan kosong yaitu dengan cara memberikan nilai awal (head) dengan satu(1) dan nilai akhir (tail) dengan jumlah maksimal data yang akan ditampung/array. Berikut penggalan procedure
create.
Procedure clear;
Begin
While not IsEmpty then
DeQueue;
Procedure create;
Begin
Head := 1;
Tail := Max_Queue;
End;

2. IsEmpty
Function IsEmpty berguna untuk mengecek apakah Queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah tail masih terletak bersebelahan dengan head, dan tail LEBIH BESAR head atau tidak, jika benar maka
kosong. Berikut penggalan function IsEmpty :
Function IsEmpty : Boolean;
Begin
If (Tail mod max_queue) + 1 = head then
IsEmpty := true
Else
IsEmpty := false;
End;

3. IsFull
Function IsFull berguna untuk mengecek apakah Queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah tempat yang masih kosong tinggal satu atau tidak (untuk membedakan dengan IsEmpty dimana semua tempat kosong),
jika ya maka kosong. Berikut penggalan function IsFull:
Function Isfull : Boolean;
Var
X : 1..Max_Queue;
Begin
X := (Tail mod Max_Queue) + 1;
If (x mod Max_Queue) + 1 = head then
IsFull := true
Else
isFull := false;
End;

4. EnQueue
Procedure EnQueue berguna untuk memasukkan 1 elemen ke dalam Queue. (tail dan head mula-mula adalah nol (0) ) Berikut penggalan procedure EnQueue.
Procedure EnQueue(elemen : TypeElemen);
Begin
If not IsFull then
Begin
Tail := (tail mod Max_Queue) + 1;
Queue [Tail] := elemen;
End;
End;

5. DeQueue
Procedure DeQueue berguna untuk mengambil 1 elemen dari queue. Hal ini dilakukan dengan cara memindahkan posisi head satu langkah ke belakang. Berikut penggalan procedure dequeue.
Procedure dequeue;
Begin
If not IsEmpty then
Head := (head mod max_queue) + 1
End;

Anda baru saja membaca artikel yang berkategori Latihan vb 6 dengan judul IMPLEMENTASI QUEUE DENGAN CIRCULAR ARRAY. Anda bisa bookmark halaman ini dengan URL http://belajar-dgn-vb.blogspot.com/2012/06/implementasi-queue-dengan-circular.html. Terima kasih!
Ditulis oleh: aku iwa - Thursday, 28 June 2012

Belum ada komentar untuk "IMPLEMENTASI QUEUE DENGAN CIRCULAR ARRAY"

Post a Comment