5.struktur Data & Algoritma - Queue
5.struktur Data & Algoritma - Queue
Pendahuluan
A. Tujuan
Setelah praktikum ini, praktikan diharapkan dapat:
1. Memahami konsep Queue
2. Memahami operasi dasar Queue
3. Menerapkan Queue menggunakan bahasa C++
B. Peralatan
1. PC Desktop
2. Windows 7
3. MinGW
C. Teori
QUEUE (ANTREAN)
Queue nama lainnya adalah antrean. Merupakan sekumpulan data yang mengalami
penambahan data(elemen) melalui satu sisi, yaitu depan (head) dan penghapusan data(elemen)
melalui sisi belakang (tail). Sifat tersebut biasa disebut dengan FIFO (First In First Out), yaitu
data yang pertama masuk akan keluar terlebih dahulu. Dan data yang terakhir masuk akan keluar
paling akhir. Perhatikan ilustrasi pada Gambar 1.
Elemen yang pertama kali masuk ke queue disebut dengan elemen depan (front/head of
queue), sedangkan elemen yang terakhir kali masuk ke queue disebut dengan elemen belakang
(rear/tail of queue).
4 3 2 1
4 3 2 1
Perbedaan antara stack dan queue terdapat pada aturan penambahan dan penghapusan
elemen. Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu tempat atau
satu ujung. Sementara pada queue operasi penambahan dapat dilakukan di tempat yang berbeda.
Penambahan elemen dilakukan di salah satu ujung, biasa disebut dengan elemen depan, dan
ujung lainnya, yang biasa disebut dengan ujung belakang digunakan untuk penghapusan data.
Sifat yang demikian biasa dikenal dengan FIFO. Ilustrasi operasi queue seperti pada Gambar 2.
Depan/Head Belakang/Tail
Gambar 2
2
4. Memasukkan elemen ke dalam queue dan InQueue (Insert Queue);
5. Menghapus elemen dari queue atau DeQueue (Delete Queue).
2. Fungsi full()
Berguna untuk mengecek apakah antrean sudah penuh atau belum. Dilakukan dengan cara
mengecek nilai nilai akhir (tail) apakah sudah sama dengan nilai maksimal dari queue. Jika
nilai tail sama dengan nilai maksimal, maka fungsi akan mengembalikan nilai true dan jika
tidak, maka fungsi akan mengembalikan nilai false.
bool full(void)
{
if(antre.akhir== MAX-1){
return true;
} else {
return false;
}
}
3. Fungsi empty()
Fungsi ini berguna untuk mengecek apakah queue masih kosong atau sudah terisi data.
Proses pengecekan dilakukan dengan memeriksa nilai akhir (tail) apakah bernilai nol atau
tidak. Jika tail = -1, maka nilai yang dikembalikan adalah true, dan sebaliknya. Head (kepala
antrean) tidak perlu diperiksa lagi karena tidak akan berubah. Hal ini disebabkan karena
pergerakan pada queue terjadi di elemen tail.
bool empty(void)
{
if(antre.akhir== -1){
return true;
} else {
return false;
}
}
3
4. Fungsi inQueue()
Digunakan untuk memasukkan elemen ke dalam queue. Penambahan queue terjadi di elemen
paling akhir. Jika queue belum penuh, maka nilai akhir (tail) akan ditambah 1(increment).
5. Fungsi deQueue()
Berguna untuk mengambil elemen dari queue, dengan cara memindahkan semua elemen satu
langkah ke posisi di depannya. Sehingga elemen yang paling depan akan tertimpa.
Pergeseran dilakukan dengan menggunakan perulangan.
6. Fungsi clear()
Berguna untuk menghapus elemen-elemen queue dengan cara membuat Tail dan Head = -1.
Penghapusan elemen queue sebenarnya tidak menghapus array-nya, tetapi hanya mengeset
indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen antrean tidak lagi terbaca.
4
D.I Praktikum
Latihan 1
Program lengkap dari contoh penerapan queue adalah sebagai berikut :
5
6
Latihan 2
7
8
9
E. Tugas
1. Tambahkan function untuk mencari suatu elemen di dalam queue yang sudah diinputkan.
2. Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen-elemen queue dalam
function tersendiri.
10
11