Queue adalah suatu bentuk khusus dari linear list dengan operasi penyisipan (insertion) hanya pada salah satu sisi ( Rear/ belakang) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya (Front/ depan) dari list.
Antrean   Q  = [ Q1, Q2, Q3,……….., QT]
                Front(Q) = bagian depan dari antrean Q
                Rear(Q)  = bagian belakang dari antrean Q
                Noel(Q)  = Jumlah elemen di dalam antrean ( berharga integer)
                Jadi :  Front(Q) = QT
                           Rear(Q) = Q1
                           Noel(Q) = T
Antrean beroperasi secara FIFO ( First In First Out) yang pertama masuk, yang pertama keluar.
Operasi dasar pada Antrean :
CREATE(Q)
Operator untuk membentuk suatu antrean hampa
Q = [,…….,]
NOEL(CREATE(Q)) = 0
FRONT(CREATE(Q)) = tidak didefinisikan
REAR(CREATE(Q)) = tidak didefinisikan

ISEMPTY(Q)
Operator yang menentukan apakah antrean Q hampa atau tidak.
Operand dari operator ISEMPTY adalah antrean.
Hasilnya bertipe data Boolean
ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0), FALSE jika Q bukan antrean kosong (NOEL(Q) ¹ 0)

INSERT(E,Q)
Operator yang menyisipkan elemen E ke dalam antrean Q
Catt : Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang
Q = [ A, B, C, D]
REAR(INSERT(E,Q)) = E
FRONT(Q) = A
NOEL(Q) = 5
ISEMPTY(INSERT(E,Q)) = FALSE

REMOVE(Q)
Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek
Jika   NOEL(Q) = 0 maka REMOVE(Q) = ERROR ( UNDERFLOW)

Penyajian dari antrean :
  1. One way list
  2. Array
Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen
Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular.

ALGORITMA QINSERT
QINSERT(QUEUE, N, FRONT, DATA)
1.       {Apakah antrean penuh}
  Jika FRONT = 1 dan REAR = N atau Jika FRONT = REAR+1, maka Write : OVERFLOW, return.
2.       Jika FRONT = NULL  maka FRONT := 1, REAR := 1
   Dalam hal ini
            Jika FRONT = N maka REAR := 1
   Dalam hal lain
            REAR := REAR + 1
3.       QUEUE(REAR) := DATA ( masukkan elemen baru)
4.       Return

ALGORITMA QDELETE
QDELETE(QUEUE, N, FRONT, REAR, DATA)
1.       {Apakah antrean kosong}
 Jika FRONT = NULL,  maka Write : UNDERFLOW, return.
2.       DATA := QUEUE(FRONT)
3.       (FRONT mendapat nilai baru)
  Jika FRONT =REAR  maka FRONT := NULL
  REAR := NULL
  Dalam hal ini:
            Jika FRONT := N maka FRONT :=  1
  Dalam hal lain:
             FRONT := FRONT + 1
4.       Return

Contoh Program Queue:
*Source Code dibawah ini di compile menggunakan Code::Blocks

Tampilan Program:

Baca Juga
Pemrograman C++: Variable
Pemrograman C++: Array 1 Dimensi dan 2 Dimensi
Pemrograman C++: Stack
Pemrograman C++: Queue
Pemrograman C++: Sorting
Pemrograman C++: Searching

Referensi:
Materi Dosen Struktur Data Stikom Bali

0 komentar:

Post a Comment

 
UB Mansion © 2013. All Rights Reserved. Powered by Blogger
Top