Anda di halaman 1dari 36

SIA103 STRUKTUR DATA

QUEUE
Tim Dosen:
Purbandini, S.Si., M.Kom. (PJMK)
Yutika A Effendi, S.Kom., M.Kom.
Rodik W Indrawan, S.ST., M.Tr.T.

Robotics and Artificial Intelligence


Faculty of Advanced Technology and Multidiscipline
OBJECTIVES
Capaian Pembelajaran:

1) Mahasiswa memahami definisi dan konsep Queue


2) Mahasiswa memahami operasi Queue
3) Mahasiswa memahami implementasi Queue
WHAT IS QUEUE?
DEFINISI

è Suatu kumpulan data yang mana penambahan elemen hanya


bisa dilakukan pada satu ujung dan penghapusan atau pengambilan
elemen dilakukan lewat ujung lain.

è Suatu linier list dimana operasi delete terjadi pada sisi depan
(front) dan operasi insert terjadi pada sisi belakang (rear).
WHAT IS QUEUE?
ü Bersifat FIFO (First In First Out)
ü Elemen yang pertama masuk ke antrian akan keluar pertama
kalinya
ü DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian
ü Antrian dapat dibuat dengan menggunakan: Linear Array dan
Circular Array

Antrian Q=[Q1, Q2, ….., QN]


Front (Q)=Q1 -> bagian depan antrian
Rear (Q)=QN -> bagian belakang antrian
Noel (Q)=N -> jumlah elemen dalam antrian
GAMBARAN PROSES

Front : Depan
Rear : Belakang
KEGUNAAN QUEUE
Meski Queue sangat sederhana, namun Queue merupakan kakas
dasar penyelesaian masalah-masalah besar.

Penggunaan Queue yang utama adalah untuk simulasi fenomena


antrian di dunia nyata, serta fenomena antrian di pengolahan data.

Algoritma Queue juga digunakan dalam sistem operasi untuk


mengontrol urutan proses operasi sistem.
KEGUNAAN QUEUE
Penggunaan Queue dapat dicontohkan seperti dibawah ini :
1. Simulasi antrian di dunia nyata, antara lain :
§ Antrian pembelian tiket di depan loket untuk bis, kereta api,
bioskop.
§ Antrian mobil di depan gerbang jalan tol.
§ Antrian kendaraan di jalanan umum.

2. Sistem produksi
§ Barisan bahan atau komponen yang akan diproses suatu mesin.
§ Barisan bahan atau komponen yang akan diproses suatu manusia.
KARAKTERISTIK QUEUE
Karakteristik penting dari antrian adalah :
1. Elemen antrian yaitu item-item data yang terdapat di elemen
antrian
2. Front (elemen terdepan dari antrian)
3. Rear (elemen terakhir dari antrian)
4. Jumlah elemen pada antrian (Count)
5. Status antrian
KARAKTERISTIK QUEUE
Kondisi antrian yang menjadi perhatian adalah :
1. Penuh
Bila elemen pada antrian mencapai kapasitas maksimum antrian.
Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian.
Penambahan elemen menyebabkan kondisi kesalahan Overflow.

2. Kosong
Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin
dilakukan pengambilan elemen dari antrian. Pengambilan elemen
menyebabkan kondisi kesalahan Underflow.
IMPLEMENTASI QUEUE
1. Implementasi Queue dengan Linear Array
2. Implementasi Queue dengan Circular Array
IMPLEMENTASI QUEUE
Implementasi Queue dengan Linear Array
ü Linear array adalah suatu array yang dibuat seakan-akan merupakan
suatu garis lurus dengan satu pintu masuk dan satu pintu keluar.
ü Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu
keluar di ujung satunya
ü Sehingga membutuhkan variabel : Head dan Tail
PENDEFINISIAN QUEUE
#define MAX 8
typedef struct{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;
OPERASI-OPERASI PADA QUEUE
Create()
1. Untuk menciptakan dan menginisialisasi Queue
2. Dengan cara membuat Head dan Tail = -1
OPERASI-OPERASI PADA QUEUE
IsEmpty()
1. Untuk memeriksa apakah Antrian sudah penuh atau belum
2. Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
3. Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala
antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
4. Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian
kebelakang, yaitu menggunakan nilai Tail
OPERASI-OPERASI PADA QUEUE
IsFull()
• Untuk mengecek apakah Antrian sudah penuh atau belum
• Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena
MAX-1 adalah batas elemen array pada C) berarti sudah penuh
OPERASI-OPERASI PADA QUEUE
Enqueue(data)
• Untuk menambahkan elemen ke dalam Antrian,
penambahan elemen selalu ditambahkan di elemen paling
belakang
• Penambahan elemen selalu menggerakan variabel Tail
dengan cara increment counter Tail
OPERASI-OPERASI PADA QUEUE
Enqueue(data)
OPERASI-OPERASI PADA QUEUE
Dequeue()
• Digunakan untuk menghapus elemen terdepan/pertama dari
Antrian
• Dengan cara mengurangi counter Tail dan menggeser semua
elemen antrian kedepan
• Penggeseran dilakukan dengan menggunakan looping
OPERASI-OPERASI PADA QUEUE
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
OPERASI-OPERASI PADA QUEUE
Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head sampai tail
IMPLEMENTASI QUEUE
Implementasi Queue dengan Circular Array
Salah satu variasi array adalah array melingkar (circular array), artinya array
dapat diakses mulai dari sembarang indeks (indeks awal) kearah indeks
terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali
ke indeks awal.

Circular array adalah array yang dibuat seakan-akan merupakan sebuah


lingkaran dengan titik awal dan titik akhir saling bersebelahan jika array
tersebut masih kosong. Jumlah data yang dapat ditampung oleh array ini
adalah besarnya ukuran array dikurangi 1. Misalnya besar array adalah 8,
maka jumlah data yang dapat ditampung adalah 7.
NOTASI PADA QUEUE
1. FRONT(Q) menunjukkan posisi terdepan dari suatu antrian.
Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka FRONT(Q) = A.

2. REAR(Q) menunjukkan posisi terakhir dari suatu antrian.


Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka REAR(Q) = E.

3. NOEL(Q) menunjukkan jumlah elemen di dalam Antrean Q.


Contoh jika kita mempunyai antrian Q = [A,B,C,D,E] maka NOEL(Q) = 5.
DEKLARASI QUEUE
1. AWAL (Inisialisasi)

2. INSERT (Sisip, Masuk, Simpan, Tulis)


DEKLARASI QUEUE
3. DELETE (Hapus, Keluar, Ambil atau Dilayani, Baca)

4. RESET (Kembali ke keadaan awal)


ILUSTRASI LINIER QUEUE
Dapat dilihat bahwa setiap terjadi
penghapusan elemen pada queue nilai
(index) dari Front bertambah satu (1) ;
dapat ditulis FRONT = FRONT+1. Begitu
pula bila terjadi penambahan elemen pada
queue nilai (index) Rear bertambah satu
(1) ; dapat ditulis REAR = REAR + 1.
ILUSTRASI CIRCULAR QUEUE
JENIS-JENIS QUEUE
Selain antrian yang telah kita bahas di atas, masih ada dua tipe
antrian lagi yang penggunaannya juga banyak di dalam kehidupan
sehari hari atau dalam dunia komputer itu sendiri, diantaranya
adalah :
1. DEQUE

2. ANTRIAN BERPRIORITAS
JENIS-JENIS QUEUE

DEQUE
DEQUE adalah antrian dimana elemennya bisa masuk dan keluar
lewat kedua ujungnya (berbeda dengan queue yang hanya bisa masuk
lewat ujung belakang dan keluar lewat ujung depan).

Biasanya DEQUE disajikan dengan menggunakan double linked list


yang memiliki dua buah pointer yang menunjuk ke posisi sebelumnya
dan sesudahnya (posisi kiri dan kanannya).
JENIS-JENIS QUEUE

DEQUE
JENIS-JENIS QUEUE

2 JENIS VARIASI DEQUE


a. Deque input terbatas : suatu deque yang membatasi pemasukkan
elemen hanya pada satu ujung dari list, sementara penghapusan
elemen boleh dilakukan pada kedua ujung list.

b. Deque output terbatas : merupakan kebalikan dari deque input


terbatas yaitu suatu deque yang membatasi penghapusan elemen
hanya pada satu ujung dari list, sementara pemasukkan elemen boleh
dilakukan pada kedua ujung list.
JENIS-JENIS QUEUE
ANTRIAN BERPRIORITAS
Antrian berprioritas adalah suatu queue yang setiap elemennya telah diberikan
sebuah prioritas, dan urutan proses penghapusan elemen adalah berdasarkan
aturan berikut :
a. Elemen yang prioritasnya lebih tinggi, diproses lebih dahulu dibandingkan
dengan elemen yang prioritas lebih rendah.
b. Dua elemen dengan prioritas yang sama, diproses sesuai dengan urutan mereka
sewaktu dimasukkan ke dalam priority queue.

Salah satu contoh antrian berprioritas ini adalah sistem berbagi waktu (time sharing
system), dimana program yang mempunyai prioritas tinggi akan dikerjakan lebih
dahulu dan program-program yang berprioritas sama akan membentuk antrian yang
biasa.
LATIHAN
1. Buatlah program dalam bentuk menu untuk mengimplementasikan
antrian. Menu tsb berisi memasukkan data, menghapus data,
menampilkan data dan keluar.
2. Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen
queue dengan menggunakan fungsi yang sudah dibuat pada soal 1!
3. Buatlah program queue dengan menggunakan circular array dan linked
list!
PERTEMUAN SELANJUTNYA….
TUGAS 2: QUEUE
INDIVIDU
REFERENSI
1. Mark Allen Weiss, “Data Structures and Algorithm Analysis in C++ 4ed”, Addison-
Wesley, New Jersey, 2014
2. Robert Sedgewick, Philippe Flajolet, “An Introduction to the Analysis of Algorithms
2ed”, Addison-Wesley, New Jersey, 2013
3. Jeri R. Hanly, Elliot B. Koffman, Problem Solving and Program Design in C, 7th Edition,
Addison Wesley, 2012.
4. Levitin, Anany. Introduction to the Design & Analysis of Algorithms. 3rd Edition.
United States of America: Pearson Education Inc. 2012.
5. Thomas H. Cormen, Charles E.Leiserson, Ronald L. Rivest, Introduction to Algorithms,
McGraw-Hill, 2003
THANKS!
Do you have any questions?

Anda mungkin juga menyukai