Anda di halaman 1dari 32

ANTRIAN

Tarsinah Sumarni
ILUSTRASI
• Contoh antrian :
• Antrian printer
• Antrian tiket bioskop
• Antrian pada kasir sebuah bank.

Ketika seorang pelanggan datang, akan menuju ke


belakang dari antrian. Setelah pelanggan dilayani, antrian
yang berada di depan akan maju.
PENGERTIAN

• Queue (antrian) adalah struktur data dimana


proses pengambilan dan penambahan
element dilakukan pada ujung yang berbeda.
• Queue mengikuti konsep FIFO.
• FIFO (First In First Out) : elemen yang pertama
masuk akan menjadi elemen yang pertama
kali keluar.
QUEUE DAN STACK

• Karakteristik yang membedakan queue


(antrian) dari stack adalah cara menyimpan
dan mengambil data dengan struktur first in
first out (FIFO).
• Hal ini berarti elemen pertama yang ditempat-
kan pada queue adalah yang pertama
dipindahkan.
ENQUEUE

• Enqueue :
yaitu proses penambahan elemen pada
queue.
• Elemen ditempatkan pada ujung (tail)
DEQUEUE
• Dequeue
yaitu proses pengambilan elemen
pada queue.
• Memindahkan elemen dari kepala
(head) sebuah queue.
• Penambahan dilakukan pada bagian
belakang. Sedangkan pengambilan
dilakukan pada bagian depan (element
yang pertama masuk).

enqueue Queue dequeue


ILUSTRASI

GAMBAR PROSES

A B QUEUE

A B C D ENQUEUE

C D DEQUEUE
KARAKTERISTIK QUEUE
• Elemen antrian yaitu item-item
data yang terdapat di elemen
antrian
• Front
• Rear
• Jumlah elemen pada antrian
(Count)
• Status antrian
FRONT DAN REAR
• Front : pointer bantu yang digunakan untuk
menunjuk element yang paling depan.
• Rear : pointer bantu yang digunakan untuk
menunjuk element yang paling belakang.

Enqueue Queue Dequeue


Rear Front
STATUS
ANTRIAN
PENUH
• Bila elemen pada antrian mencapai
kapasitas maksimum antrian.
• Pada kondisi ini, tidak mungkin
dilakukan penambahan ke antrian.
• Penambahan elemen menyebabkan
kondisi kesalahan Overflow.
KOSONG
• Bila tidak ada elemen pada antrian.
• Pada kondisi ini, tidak mungkin
dilakukan pengambilan elemen dari
antrian.
• Pengambilan elemen menyebabkan
kondisi kesalahan Underflow.
• Queue berguna untuk menyimpan pekerjaan
yang tertunda.
GAMBARAN PROSES QUEUE
(ANTRIAN)
OPERASI PADA QUEUE
 Deklarasi
 Inisialisasi
 Cek kosong
 Cek penuh
 Penambahan
 Pengambilan
 Pengaksesan
DEKLARASI
• Proses yang harus dilakukan pertama kali adalah
deklarasi/menyiapkan tempat.
• Langkah yang harus dilakukan adalah :
– Deklarasi class
– Deklarasi struktur data (menggunakan array atau linked
list)
– Deklarasi pointer front dan rear
– Deklarasi variabel size untuk menyimpan besar array.
– Deklarasi variabel jumlah untuk mengetahui banyak item
yang disimpan pada queue.
Deklarasi Queue

0 1 2 3 4 5 6 7 Max = 8

head = -1
tail = -1
INISIALISASI
• Merupakan proses pemberian nilai awal.
• Pada Array :
1. Pembentukan obyek array beserta ukurannya.
antrian= new int[10];
(pembentukan obyek array yang memiliki 10 element, dan alamat
obyek akan disimpan pada variabel bernama antrian)
2. Pemberian nilai awal pada variabel front=0 dan
belakang=-1.
front = 0;
rear=-1;
• Pada Linked List:
Proses inisialisasi dilakukan dengan
memberikan nilai awal pada variabel head, tail
front dan rear dengan nilai null.
head = tail = front=rear= null;
Fungsi Create
• Digunakan untuk membentuk dan menunjukan awal
terbentuknya suatu Antrean / Queue
Void Create()
{
antrian.head = antrian.tail = -1
}

0 1 2 3 4 5 6 7 Max = 8

head = -1 Antrian pertama kali


tail = -1
CEK KOSONG (ISEMPTY)
• Operasi yang digunakan untuk mengecek kondisi
queue dalam keadaan kosong.
• Pada array : menggunakan pengecekan pada variabel
jumlah_item. Jika nilainya = 0 berarti queue dalam
kondisi kosong.
• Pada linked list : dapat menggunakan pengecekan
front atau rear jika nilainya null berarti queue
kosong.
• Operasi ini harus dapat mengembalikan nilai true jika
queue kosong dan false jika sebaliknya.
Int IsEmpty()
{
if (antrian.tail == -1)
return 1;
else
return 0;
}

0 1 2 3 4 5 6 7 Max = 8

head = -1 Antrian kosong


tail = -1 Karena tail = -1
CEK PENUH (ISFULL)
• Operasi yang hanya dapat diterapkan pada queue
yang menggunakan array.
• Operasi ini digunakan untuk mengecek kondisi queue
dalam keadaan penuh.
• Caranya : melihat nilai pada variabel jumlah item. Jika
nilainya = size-1 (dimana size adalah ukuran array)
maka dapat diindikasikan queue dalam kondisi
penuh.
• Operasi ini harus dapat mengembalikan nilai true jika
queue penuh dan false jika sebaliknya.
Int IsFull()
{
if (antrian.tail == Max-1)
return 1;
else
return 0;
}

5 10 35 20 15 30 40 25
0 1 2 3 4 5 6 7 Max = 8

Antrian penuh karena


head = 0 tail = 7
Head = 0
tail = max - 1
Fungsi Enqueue
•Untuk menambahkan elemen ke dalam Antrian,
penambahan elemen selalu dilakukan pada elemen paling
belakang
•Penambahan elemen selalu menggerakan variabel Tail
dengan cara menambahkan Tail terlebih dahulu
Fungsi Dequeue
•Digunakan untuk menghapus elemen terdepan (head) dari
Antrian
•Dengan cara : menggeser semua elemen antrian
kedepan dan mengurangi Tail dgn 1. Penggeseran dilakukan
dengan menggunakan looping
Fungsi Clear

• Untuk menghapus elemen-elemen Antrian dengan cara


membuat Tail dan Head = -1

• Penghapusan elemen-elemen Antrian sebenarnya tidak


menghapus arraynya, namun hanya mengeset indeks
pengaksesan-nya ke nilai -1 sehingga elemen-elemen
Antrian tidak lagi terbaca sehingga mengembalikan
antrian seperti keadaan semula
Antrian setelah di lakukan Clear

0 1 2 3 4 5 6 7 Max = 8

head = -1 Antrian kosong


tail = -1 Karena tail = -1
ANTRIAN BERPRIORITAS
• Dalam antrian yang telah dibahas sebelum, semua
elemen yang masuk dalam antrian dianggap
mempunyai prioritas yang sama, sehingga elemen
yang masuk lebih dahulu akan diproses lebih dahulu.
• Dalam praktek, elemen-elemen yang akan masuk
dalam suatu antrian ada yang dikatakan mempunyai
prioritas yang lebih tinggi dibanding yang lain.
• Antrian yang demikian ini disebut dengan antrian
berprioritas (priority queue).
Latihan I Struktur Data
(Pertemuan 5)

Berikan gambaran/ilustrasi dari kasus antrian berikut :


a) Diketahui suatu Antrian/queue dgn max = 6.
b) Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah
posisi Head dan Tail ?
c) Kemudian lakukan Dequeue 2 elemen dari antrian. Maka
dimana posisi Head dan Tail ?
d) Dari keadaan diatas, bagaimanakah kondisi IsFull dan
IsEmpty nya ?

Anda mungkin juga menyukai