pertemuan 9 queuec2a0
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Pertemuan 9
Waktu
:
menit
Tujuan Pembelajaran
: Mahasiswa mampu menjelaskan teknik pemrograman
Substansi Materi
: Queue
menggunakan Queue.
Tabulasi Kegiatan Perkuliahan
No
Tahap
Kegiatan
Pendahuluan
Penyajian
Materi
Penutup
Kegiatan
Mahasiswa
Kegiatan Pengajar
. Membuka pertemuan
. Mengulang materi pertemuan
sebelumnya
. Queue
. Queue dengan array
. Queue dengan circular array
. Menyimpulkan materi pertemuan
. Memberikan tugas kecil
. Menutup pertemuan
Menyimak
Bertanya
Menyimak
Bertanya
Menjawab
Pertanyaan
Menyimak
Media & Alat
Waktu
Papan Tulis
Menit
Papan Tulis
Menit
Papan tulis
Menit
M A T E R I K U L I A H
QUEUE / ANTRIAN
Secara harfiah queue dapat diartikan sebagai antrian. Queue merupakan kumpulan data
dengan penambahan data hanya melalui satu sisi, yaitu belakang tail dan penghapusan
data hanya melalui sisi depan head . Berbeda dengan stack yang bersifat L)FO maka queue
bersifat F)FO First )n First Out , yaitu data yang pertama masuk akan keluar terlebih
dahulu dan data yang terakhir masuk akan keluar terakhir. Berikut ini adalah gambaran
struktur data queue.
V3/2009‐2010 1
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Gambar . )lustrasi Queue
Gambar . )lustrasi Queue
Elemen yang pertama kali masuk ke dalam queue disebut elemen depan front/head of
queue , sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang
rear/tail of queue . Perbedaan antara stack dan queue terdapat pada aturan penambahan
dan penghapusan elemen. Pada stack, operasi penambahan dan penghapusan elemen
dilakukan di satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat
dengan ujung atau dianggap paling atas sehingga pada operasi penghapusan, elemen
teratas tersebut akan dihapus paling awal, sifat demikian dikenal dengan L)FO. Pada queue,
operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan
melalui salah satu ujung, menempati posisi di belakang elemen‐elemen yang sudah masuk
sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen
dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau
elemen terdepan. Sifat yang demikian dikenal dengan F)FO.
V3/2009‐2010 2
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi standar pada queue adalah:
. membuat queue atau inisialisasi.
. mengecek apakah queue penuh.
. mengecek apakah queue kosong.
. memasukkan elemen ke dalam queue atau )nQueue )nsert Queue .
. Menghapus elemen queue atau DeQueue Delete Queue .
Implementasi Queue dengan Linear Array
Disebut juga queue dengan model fisik, yaitu bagian depan queue selalu menempati posisi
pertama array. Queue dengan linear array secara umum dapat dideklarasikan sebagai
berikut:
Const
MaxQueue = {jumlah};
TypeQueue = byte;
Queue : Array[ ..MaxQueue] of TypeQueuel
Type
Var
(ead, Tail
: Byte;
V3/2009‐2010 3
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi queue dengan linear array:
. Create
Procedure create berguna untuk menciptakan queue yang baru dan kosong yaitu
dengan cara memberikan nilai awal head dan nilai akhir tail dengan nol
menunjukan bahwa queue masih kosong.
Procedure Create;
Begin
End;
. Nol
(ead := ; Tail := ;
. Empty
Function empty berguna untuk mengecek apakah queue masih kosong atau sudah
berisi data. (al ini dilakukan dengan mengecek apakah tail bernilai nol atau tidak,
jika ya maka kosong.
Function Empty : Boolean;
Begin
)f Tail = then
Empty := true
Empty := False;
End;
Else
V3/2009‐2010 4
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
. Full
Function Full : Boolean;
Begin
End;
)f Tail = MaxQueue then
Full := true
Full := False
Else
. EnQueue
Procedure EnQueue berguna untuk memasukkan elemen ke dalam queue.
Procedure Enqueue Elemen : Byte ;
)f Empty then
Begin
(ead := ;
Tail := ;
Queue[head] := Elemen;
End
)f Not Full then
Begin
Else
Begin
End;
End;
)nc Tail ;
Queue[tail] := Elemen;
V3/2009‐2010 5
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
. DeQueue
Procedure DeQueue berguna untuk mengambil elemen dari Queue, operasi ini
sering disebut juga SERVE. (al ini dilakukan dengan cara memindahkan semua
elemen satu langkah ke posisi di depannya, sehingga otomatis elemen yang paling
depan akan tertimpa dengan elemen yang terletak dibelakangnya.
Procedure DeQueue;
Begin
)f Not Empty then
Begin
End;
Var ) : Byte;
For ) := (ead to Tail‐ do
End;
Queue[)] := Queue[)+ ];
Dec Tail ;
. Clear
Procedure clear berguna untuk menghapus semua elemen dalam queue dengan
jalan mengeluarkan semua elemen tersebut satu per satu sampai kosong dengan
memanfaatkan procedure DeQueue.
Procedure Clear;
Begin
End;
While Not Empty then
DeQueue;
V3/2009‐2010 6
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
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 ke arah 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 . Misalnya besar array
adalah , maka jumlah data yang dapat ditampung adalah .
Gambar . )lustrasi Circular Array
Dengan circular array, meskipun posisi terakhir telah terpakai, elemen baru tetap dapat
ditambahkan pada posisi pertama jika posisi pertama dalam keadaan kosong. Jika
akhir=MAX dan awal= , nilai head dan tail mencapai maksimum, maka akan dikembalikan
ke posisi awal. Operasi‐operasi yang terdapat pada circular array tidak jauh berbeda
dengan operasi pada linear array.
V3/2009‐2010 7
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi queue dengan circular array:
. Create
Procedure Create;
Begin
End;
(ead := ;
Tail := MaxQueue;
. Empty
Function Empty : Boolean;
Begin
Empty := true
Empty := False;
. Full
End;
)f Tail Mod Max_Queue + = (ead then
Else
Function Full : Boolean;
Var
Begin
X : .. Max_queue;
X := Tail Mod Max_queue + ;
)f x Mod Max_queue + = head then
Else
Full := True;
V3/2009‐2010 8
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
End;
Full := False;
. EnQueue
Procedure EnQueue Elemen : TypeElemen ;
Begin
)f Not Full Then
End;
Begin
Queue[Tail] := Elemen;
Tail := Tail Mod Max_queue + ;
End;
. DeQueue
Procedure Dequeue;
Begin
End;
)f Not Empty then
(ead := (ead Mod Max_queue + ;
V3/2009‐2010 9
ALGORITMA dan STRUKTUR DATA II
QUEUE
Pertemuan 9
Waktu
:
menit
Tujuan Pembelajaran
: Mahasiswa mampu menjelaskan teknik pemrograman
Substansi Materi
: Queue
menggunakan Queue.
Tabulasi Kegiatan Perkuliahan
No
Tahap
Kegiatan
Pendahuluan
Penyajian
Materi
Penutup
Kegiatan
Mahasiswa
Kegiatan Pengajar
. Membuka pertemuan
. Mengulang materi pertemuan
sebelumnya
. Queue
. Queue dengan array
. Queue dengan circular array
. Menyimpulkan materi pertemuan
. Memberikan tugas kecil
. Menutup pertemuan
Menyimak
Bertanya
Menyimak
Bertanya
Menjawab
Pertanyaan
Menyimak
Media & Alat
Waktu
Papan Tulis
Menit
Papan Tulis
Menit
Papan tulis
Menit
M A T E R I K U L I A H
QUEUE / ANTRIAN
Secara harfiah queue dapat diartikan sebagai antrian. Queue merupakan kumpulan data
dengan penambahan data hanya melalui satu sisi, yaitu belakang tail dan penghapusan
data hanya melalui sisi depan head . Berbeda dengan stack yang bersifat L)FO maka queue
bersifat F)FO First )n First Out , yaitu data yang pertama masuk akan keluar terlebih
dahulu dan data yang terakhir masuk akan keluar terakhir. Berikut ini adalah gambaran
struktur data queue.
V3/2009‐2010 1
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Gambar . )lustrasi Queue
Gambar . )lustrasi Queue
Elemen yang pertama kali masuk ke dalam queue disebut elemen depan front/head of
queue , sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang
rear/tail of queue . Perbedaan antara stack dan queue terdapat pada aturan penambahan
dan penghapusan elemen. Pada stack, operasi penambahan dan penghapusan elemen
dilakukan di satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat
dengan ujung atau dianggap paling atas sehingga pada operasi penghapusan, elemen
teratas tersebut akan dihapus paling awal, sifat demikian dikenal dengan L)FO. Pada queue,
operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan
melalui salah satu ujung, menempati posisi di belakang elemen‐elemen yang sudah masuk
sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen
dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau
elemen terdepan. Sifat yang demikian dikenal dengan F)FO.
V3/2009‐2010 2
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi standar pada queue adalah:
. membuat queue atau inisialisasi.
. mengecek apakah queue penuh.
. mengecek apakah queue kosong.
. memasukkan elemen ke dalam queue atau )nQueue )nsert Queue .
. Menghapus elemen queue atau DeQueue Delete Queue .
Implementasi Queue dengan Linear Array
Disebut juga queue dengan model fisik, yaitu bagian depan queue selalu menempati posisi
pertama array. Queue dengan linear array secara umum dapat dideklarasikan sebagai
berikut:
Const
MaxQueue = {jumlah};
TypeQueue = byte;
Queue : Array[ ..MaxQueue] of TypeQueuel
Type
Var
(ead, Tail
: Byte;
V3/2009‐2010 3
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi queue dengan linear array:
. Create
Procedure create berguna untuk menciptakan queue yang baru dan kosong yaitu
dengan cara memberikan nilai awal head dan nilai akhir tail dengan nol
menunjukan bahwa queue masih kosong.
Procedure Create;
Begin
End;
. Nol
(ead := ; Tail := ;
. Empty
Function empty berguna untuk mengecek apakah queue masih kosong atau sudah
berisi data. (al ini dilakukan dengan mengecek apakah tail bernilai nol atau tidak,
jika ya maka kosong.
Function Empty : Boolean;
Begin
)f Tail = then
Empty := true
Empty := False;
End;
Else
V3/2009‐2010 4
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
. Full
Function Full : Boolean;
Begin
End;
)f Tail = MaxQueue then
Full := true
Full := False
Else
. EnQueue
Procedure EnQueue berguna untuk memasukkan elemen ke dalam queue.
Procedure Enqueue Elemen : Byte ;
)f Empty then
Begin
(ead := ;
Tail := ;
Queue[head] := Elemen;
End
)f Not Full then
Begin
Else
Begin
End;
End;
)nc Tail ;
Queue[tail] := Elemen;
V3/2009‐2010 5
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
. DeQueue
Procedure DeQueue berguna untuk mengambil elemen dari Queue, operasi ini
sering disebut juga SERVE. (al ini dilakukan dengan cara memindahkan semua
elemen satu langkah ke posisi di depannya, sehingga otomatis elemen yang paling
depan akan tertimpa dengan elemen yang terletak dibelakangnya.
Procedure DeQueue;
Begin
)f Not Empty then
Begin
End;
Var ) : Byte;
For ) := (ead to Tail‐ do
End;
Queue[)] := Queue[)+ ];
Dec Tail ;
. Clear
Procedure clear berguna untuk menghapus semua elemen dalam queue dengan
jalan mengeluarkan semua elemen tersebut satu per satu sampai kosong dengan
memanfaatkan procedure DeQueue.
Procedure Clear;
Begin
End;
While Not Empty then
DeQueue;
V3/2009‐2010 6
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
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 ke arah 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 . Misalnya besar array
adalah , maka jumlah data yang dapat ditampung adalah .
Gambar . )lustrasi Circular Array
Dengan circular array, meskipun posisi terakhir telah terpakai, elemen baru tetap dapat
ditambahkan pada posisi pertama jika posisi pertama dalam keadaan kosong. Jika
akhir=MAX dan awal= , nilai head dan tail mencapai maksimum, maka akan dikembalikan
ke posisi awal. Operasi‐operasi yang terdapat pada circular array tidak jauh berbeda
dengan operasi pada linear array.
V3/2009‐2010 7
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
Operasi‐operasi queue dengan circular array:
. Create
Procedure Create;
Begin
End;
(ead := ;
Tail := MaxQueue;
. Empty
Function Empty : Boolean;
Begin
Empty := true
Empty := False;
. Full
End;
)f Tail Mod Max_Queue + = (ead then
Else
Function Full : Boolean;
Var
Begin
X : .. Max_queue;
X := Tail Mod Max_queue + ;
)f x Mod Max_queue + = head then
Else
Full := True;
V3/2009‐2010 8
DIKTAT KULIAH
ALGORITMA dan STRUKTUR DATA II
QUEUE
End;
Full := False;
. EnQueue
Procedure EnQueue Elemen : TypeElemen ;
Begin
)f Not Full Then
End;
Begin
Queue[Tail] := Elemen;
Tail := Tail Mod Max_queue + ;
End;
. DeQueue
Procedure Dequeue;
Begin
End;
)f Not Empty then
(ead := (ead Mod Max_queue + ;
V3/2009‐2010 9