Queue
Pertemuan 3
Queue (Antrian)
Implementasi dalam bahasa Pascal dapat dilakukan dengan memanfaatkan struktur data record dan array. Array dipergunakan untuk menyimpan elemen-elemen yang dimasukkan. Selain itu diperlukan pula suatu variabel untuk mencatat banyaknya elemen yang ada di dalam array.
Definisi
Queue adalah suatu linear list dimana operasi DELETE terjadi pada sisi depan (FRONT) dan Operasi INSERT terjadi pada sisi belakang (REAR).
Jika diberikan suatu Queue Q dengan elemen-elemennya yang terdiri atas Q1, Q 2 , ......., Qt maka Queue Q dituliskan
Q = [Q1, Q 2 , ......., Qt ]
FRONT (Q) = Q1
REAR (Q) = Qt
Selanjutnya untuk menyatakan jumlah eleen dalam suatu Queue Q digunakan notasi NOEL (Q).
Ø Catatan : Satu pengoperasian berlaku hanya untuk satu elemen.
CONT.
- Pada Queue prinsip yang digunakan adalah “Masuk Pertaa Keluar Pertama” atau FIFO (First In First Out).
- Data-data didalam antrian dapat bertipe integer, real, record.
Operasi – operasi pada Queue (Q) :
Terdapat 4 operasi pada Queue :
- CREATE
Bentuk umum : CREATE (Queue) Suatu operasi CREAT (Q) akan menghasilkan suatu Queue kosong dengan nama Q, dan didefinisikan bahwa :
NOEL (CREATE (Q)) = 0
FRONT (CREATE (Q)) = tidak terdefinisi
REAR (CREATE (Q)) = tidak terdefinisi
- ISEMPTY
Bentuk umumnya adalah : INEMPTY (Queue)
Jika Q adalah Queue, maka ISEMPTY (Q) adalah suatu operasi yang digunakan untuk memerikasa apakah Queue Q adalah Queue kosong. Jika hasil dari operasi ini akan berjenis data boolean (true/false), dengan bentuk sebagai berikut :
ISEMPTY(Q) = True, jika Q adalah Queue kosong
= False, jika Q bukan Queue kosong
- INSERT
Bentuk umumnya : INSERT (Elemen, Queue)
INSERT (E,Q), dimana E = elemen dan Q = Queue, adalah suatu operasi yang digunakan untuk memasukkan elemen E ke dalam Queue Q.
Didefinisiskan, bahwa elemen E akan menjadi elemen yang berada pada posisi REAR dan Queue Q. Akibat dari operasi ini adalah :
- REAR (insert(E,Q)) = E
- NOEL (Q) bertambah satu dan QNOEL adalah E
Jika Q adalah Queue kosong, maka:
ISEMPTY (INSERT (E, Q))= False
Dalam bentuk statemen Pascal, biasanya dituliskan :
IF ISEMPTY(Q) Then front (insert(E,Q)) = E
Else front (insert(E,Q = front(Q)));
- REMOVE
Bentuk Umum : REMOVE (elemen, Queue)
REMOVE(Q) berarti mengeluarkan elemen Q yang berada pada posisi FRONT. Akibat dari operasi ini, elemen Q akan berkurang satu dan elemen kedua (elemen yang berada disebelahnya) akan menjadi elemen yang berada pada posisi FRONT dari Queue Q ini.
Jika Q adalah kosong, maka REMOVE (Q) akan menghasilkan “EROR”
If NOEL (Q) = Then REMOVE (Q) = error_condition
Remove (Create (Q)) = error_condition
Deklarasi Queue dalam Pascal
Dalam bahasa pemrograman biasanya tidak ada fasilitas queue (built inqueue). Untuk itu setiap programmer harus mendefinisikan sendiri dengan bantuan fasilitas yang ada. Pada umumnya fasilitas yang digunakan untuk mendeklarasikan queue adalah Array.
TYPE StrukQueue = Record
Q : Array [1 ... 100] of integer;
Front, Rear : Integer;
End;
VAR Q : StrukQueue;