0% menganggap dokumen ini bermanfaat (0 suara)
347 tayangan

Modul 3 - Queue

queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur dataqueue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data

Diunggah oleh

agunghimura11
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
347 tayangan

Modul 3 - Queue

queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur dataqueue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data queue adalah konsep FIFO yaiitu fist in fist out untuk memenuhi mata kuliah struktur data

Diunggah oleh

agunghimura11
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 10

Queue Praktikum Struktur Data

1

MODUL 3
QUEUE

A. Tujuan Praktikum
Setelah mempelajari modul ini, mahasiswa diharapkan mampu untuk memahami
dan mengimplementasikan konsep Antrian/Queue.
B. Indikator
Mahasiswa mampu untuk membuat program dengan menerapkan konsep Queue.
C. Materi
1. Queue
Antrian (queue) adalah suatu kumpulan data yang penambahan elemennya
hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau
rear), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang
lain (disebut atau sisi depan atau front). Antrian (queue) mempunyai prinsip
FIFO ( First In First Out ) bahwa yang pertama masuk yang pertama keluar.


Gambar 1. Ilustrasi Antrian/Queue (Courtesy: www.ritambhara.in)

Antrian dapat dibuat baik dengan array maupun dengan struct. Pada pembuatan
antrian dengan array, antrian yang disajikan bersifat statis. Ini disebabkan oleh
jumlah maksimal array sudah ditentukan sejak deklarasi awal.
Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki
operasi-operasi sebagai berikut :

Queue Praktikum Struktur Data
2

1. EnQueue Memasukkan data ke dalam antrian
2. DeQueue Mengeluarkan data terdepan dari antrian
3. Clear Menghapus seluruh antrian
4. IsEmpty Memeriksa apakah antrian kosong
5. IsFull Memeriksa apakah antrian penuh

Sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe
bentukan baru, di dalam Bahasa C, biasa disebut struct. Sebuah struktur data dari
sebuah queue setidaknya harus mengandung dua sampai tiga variabel, yakni
variabel HEAD yang akan berguna sebagai penanda bagian depan antrian, variabel
TAIL yang akan berguna sebagai penanda bagian belakang antrian dan ARRAY
DATA dari yang akan menyimpan data-data yang dimasukkan ke dalam queue
tersebut. Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah
queue menggunakan Bahasa C:
typedef struct
{
int HEAD, TAIL;
int data[max+1];
} Queue;


dimana, nilai MAX didefinisikan sebagai jumlah tumpukan maksimum yang dapat
disimpan dalam queue. Setelah strukutr data dari queue didefinisikan dengan syntax
di atas, maka setelah itu dapat dibuat variabel-variabel baru yang mengacu pada tipe
data Queue di atas, misalkan membuat sebuah variabel bernama antrian yang bertipe
Queue:

Queue antrian;

Dalam modul ini, sebuah queue didefinisikan dengan array berukuran MAX + 1,
maksudnya adalah agar elemen array ke-0 tidak digunakan untuk menyimpan
data, melainkan hanya sebagai tempat singgah sementara untuk variabel HEAD
dan TAIL. Sehingga, jika HEAD dan TAIL berada pada elemen array ke-0, berarti
queue tersebut dalam kondisi kosong (tidakada data yang disimpan) . Berikut adalah
ilustrasi dari sebuah queue kosong dengan ukuran nilai MAX = 6:

Queue Praktikum Struktur Data
3


Operasi-operasi dasar dalam queue
Pada dasarnya, operasi- operasi dasar pada queue mirip dengan operasi-operasi
dasar pada stack . Perbedaannya hanya pada prosedur push dan pop saja. Pada
queue, prosedur yang berfungsi untuk memasukkan data / nilai ke dalam antrian
adalah enqueue, sedangkan prosedur untuk mengeluarkan data/ nilai dari antrian
adalah dequeue.
1. Prosedur createEmpty
Sama pada stack, prosedur ini berfungsi untuk mengosongkan queue dengan
cara meletakkan HEAD dan TAIL pada indeks array ke-0. Berikut deklarasi
prosedur createEmpty pada queue dalam Bahasa C:

void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}


2. Prosedur enqueue
Prosedur ini digunakan untuk memasukkan sebuah data / nilai ke dalam queue.
Sebelum sebuah data / nilai dimasukkan ke dalam queue , maka prosedur ini
terlebih dahulu melakukan pengecekan terhadap posisi HEAD dan TAIL. Jika
posisi HEAD dan TAIL masih berada pada indeks ke-0 (artinya queue masih
kosong), maka prosedur ini akan menempatkan HEAD dan TAIL pada indeks
ke-1 terlebih dahulu, baru setelah itu memasukkan data / nilai ke dalam array
data queue . Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-0,
maka posisi TAIL yang akan dinaikkan satu level.


Queue Praktikum Struktur Data
4

Jadi, pada proses enqueue, TAIL-lah yang berjalan seiring masuknya data
baru ke dalam antrian, sedangkan HEAD akan tetap pada posisi ke-1.
Berikut deklarasi prosedur enqueue dalam Bahasa C:
void enqueue(int x)
{
if ((antrian.HEAD == 0) && (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
}


Pada deklarasi prosedur enqueue di atas, prosedur memiliki sebuah parameter formal
yang bernama x yang bertipe integer. Parameter formal x ini berguna untuk
menerima kiriman nilai dari program utama (void main()) yakni berupa sebuah
bilangan integer yang akan dimasukkan ke dalam queue . Gambar di bawah ini
mengilustrasikan proses enqueue ke dalam sebuah queue yang masih kosong.


Queue Praktikum Struktur Data
5

Berikutnya, gambar di bawah ini akan mengilustrasikan proses enqueue ke dalam
sebuah queue yang telah berisi data ( queue tidak kosong).



3. Prosedur dequeue
Prosedur ini digunakan untuk mengeluarkan atau membuang sebuah data/ nilai
yang paling awal masuk (yang berada pada posisi HEAD, yakni yang paling
depan dari antrian) ke dalam queue . Pekerjaan yang dilakukan oleh prosedur ini
adalah menaikkan nilai HEAD satu level. Jadi, setiap satu kali data dikeluarkan,
maka posisi HEAD naik bertambah satu level. Misalkan HEAD berada pada
indeks ke-1, maka ketika akan mengeluarkan/ menghapus data pada posisi paling
depan (pada posisi HEAD), prosedur ini akan menaikkan posisi HEAD ke indeks
array ke-2. Berikut deklarasi prosedur pop dalam Bahasa C:





Queue Praktikum Struktur Data
6


void Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;


Ketika posisi HEAD sudah melewati posisi TAIL ( HEAD > TAIL), berarti sudah
tidak ada lagi data/ nilai di dalam queue tersebut, maka saat itu terjadi,
HEAD dan TAIL dikembalikan ke posisi ke-0. Gambar di bawah ini
mengilustrasikan cara kerja prosedur dequeue:




Ketika nilai terakhir (yakni nilai 3) dikeluarkan, maka posisi HEAD dan TAIL akan
menjadi seperti ini:





Queue Praktikum Struktur Data
7



Maka, ketika kondisi HEAD > TAIL terjadi seperti ilustrasi di atas, maka HEAD dan
TAIL dikembalikan ke indeks array ke-0.

4. Fungsi IsEmpty
Sama seperti fungsinya pada stack, fungsi ini berfungsi untuk melakukan
pengecekan terhadap queue , apakah queue tersebut kosong atau tidak. Jika
queue tersebut kosong (artinya, HEAD dan TAIL berada pada posisi 0, atau bisa
juga ketika HEAD > TAIL), maka fungsi akan mengembalikan nilai 1 ( true ), tetapi
jika queue tersebut tidak kosong/ berisi (artinya, HEAD dan TAIL tidak berada
pada posisi 0), maka fungsi akan mengembalikan nilai 0 ( false ). Berikut deklarasi
fungsi IsEmpty dalam Bahasa C:
int IsEmpty()
{
if ((antrian.HEAD> antrian.TAIL) || (antrian.HEAD ==
0) &&
(antrian.TAIL == 0))
return 1;
else
return 0;
}

5. Fungsi IsFull
Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue , apakah queue
tersebut penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada
posisi MAX), maka fungsi akan mengembalikan nilai 1 ( true ), tetapi jika queue
tersebut tidak penuh (artinya, TAIL tidak berada pada posisi MAX), maka fungsi
akan mengembalikan nilai 0 ( false ). Berikut deklarasi fungsi IsFull dalam Bahasa C:
Queue Praktikum Struktur Data
8

int IsFull()
{
if (antrian.TAIL == max)
return 1;
else
return 0;
}


Contoh program implementasi queue
Berikut adalah contoh kode program dalam Bahasa C yang mengimplementasikan
konsep queue. Pada program ini, user akan menginputkan data satu per satu,
kemudian setelah selesai menginputkan data ke dalam queue , maka program akan
menampilkan semua isi queue. Silahkan dikerjakan.



Coding bersambung dihalaman berikut:
Queue Praktikum Struktur Data
9










Coding bersambung dihalaman berikut:

Queue Praktikum Struktur Data
10




Tugas :
1. Cari realisasi Queue dalam kehidupan sehari-hari dan buat program sederhana
untuk merepresentasikannya.

Anda mungkin juga menyukai