BAB III QUEUE (ANTRIAN)

dokumen-dokumen yang mirip
Pertemuan VI ANTRIAN (Queue)

QUEUE (ANTRIAN) Struktur Data - Queue

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

LOGO STRUKTUR DATA QUEUE

Algoritma Dan Struktur Data II. Queue

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

ANTRIAN ( QUEUE ) NAMA KELOMPOK : 1.EKA PRIHANTORO 2.FATKHUL ELEKTRIK PSH 3.RIZKY GUMILANG CR

QUEUE (ANTRIAN) Depan=1 Belakang=

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

BAB IV Antrian(Queue)

ARNA FARIZA YULIANA SETIOWATI

Lab. Teknik Informatika Struktur Data 1

Algoritma Dan Struktur Data II

LAPORAN PRAKTIKUM RESMI QUEUE

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

Struktur Data Array. Rijal Fadilah S.Si

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Queue. Implementasi Queue dengan Array

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

Algoritma dan Struktur Data. Queue

05. Double Linked List

MODUL PEMROGRAMAN 2. Queue (Antrian)

1. Kompetensi Mengenal dan memahami struktur data Stack (tumpukan) dan Queue (antrian).

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

Materi 9 : QUEUE (ANTREAN) Dosen:

Antrian (Queue) Susunan koleksi data dimana proses penambahan data (add) dilakukan dari belakang dan penghapusan data (delete) dilakukan dari depan.

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

QUEUE. Queue adalah suatu linear list di mana operasi DELETE terjadi pada sisi depan (FRONT) dan operasi INSERT terjadi pada sisi belakang (REAR).

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

Struktur Data. Queue (Antrian)

TIF 4201 Algoritma Dan Struktur Data

BAB 1 PENGANTAR KE STRUKTUR DATA

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

BAB II STACK Atau TUMPUKAN

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

BAB IX LINKED LIST (SENARAI BERANTAI)

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

KERUGIAN DAN KEUNTUNGAN LINKED LIST

STRUKTUR DATA Pertemuan 6

S T A C K ( T U M P U K A N )

KUM 5 IMPLEMENTASI QUEUE

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Bubble Sort (Pengurutan Gelembung / Pemberatan)

STACK/TUMPUKAN. R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

Algoritma dan Struktur Data. Ramos Somya

BAB 3 STACK (TUMPUKAN)

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

4. STACK / TUMPUKAN TEORI PENUNJANG

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Stack. Gambar 1.1 Stack

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

BAB VI SEARCHING (PENCARIAN)

BAB II STACK (TUMPUKAN)

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

Arrays, Collections and Generics. Sisilia Thya Safitri, MT Agus Priyanto, MKom

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Algoritma Dan Struktur Data II

Pointer. Pengertian. Struktur Data Pascal

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

PROSES PENJUALAN BUKU

KONSEP POINTER DAN LINKED LIST

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

Struktur Data dan Algoritma

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

BAB 2 LANDASAN TEORI

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

KONSEP DASAR BAHASA PASCAL

Pertemuan 7. REVIEW dan QUIS

BAB IX LINKED LIST (SENARAI BERANTAI)

Algoritma Pemrograman

QUEUE. Struktur data ini banyak dipakai dalam informatika misalnya untuk merepresentasi: antrian job dalam sistem operasi antrian dalam dunia nyata.

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

STRUKTUR BAHASA PEMROGRAMAN

PERTEMUAN KE-6. Pertemuan 6

KONSEP POINTER DAN LINKED LIST

Praktikum 5. Antrian (Queue)

(3) BAHAN KAJIAN (materi ajar)

Array (Tabel) bagian 2

Transkripsi:

BAB III QUEUE (ANTRIAN) 3.1 Pengertian Antrian Antrian (Queue) merupakan kumpulan data yang mana penambahan elemen hanya bias dilakukan pada suatu ujung yaitu rear /tail / belakang, dan pengha[usan dilakukan melalui ujung yang lainnya yaitu front / head / depan. Antrian disebut FIFO (First In First Out) yaitu elemen yang lebih dulu disisipkan merupakan elemen yang akan lebih dulu diambil. Operasi-operasi dasar dari sebuah queue adalah : 1. Enqueue : proses penambahan elemen di posisi belakang 2. Dequeue : proses pengambilan elemen di posisi depan Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu : 1. Operasi pemeriksaan queue kosong (fungsi kosong) 2. Operasi pemeriksaan queue penuh (fungsi penuh). 3. Operasi inisialisasi queue (fungsi inisialisasi) 3.2 Karakteristik Antrian Karakteristik antrian sebagai berikut : 1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian 2. Front (elemen terdepan dari antrian) 3. Tail (elemen terakhir dari antrian) 4. Count (jumlah elemen pada antrian) 5. Status antrian apakah penuh atau kosong. - Penuh, jika elemen pada antrian mencapai kapasitas maximum antrian. Pada kondisi ini, tidak mungkin dilakukan panambahan ke antrian. - Kosong, jika tidak ada elemen pada antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen dari antrian. 3.3 Implementasi Antrian 3.3.1 Dengan menggunakan Array Statis Keluar A B C D E F Masuk (a) Jika ada elemen baru yang akan masuk pada gambar (a), maka ia akan diletakkan disebelah kanan F (gambar (b)). Jika ada elemen yang akan dihapus, maka A akan dihapus lebih dulu (gambar (c)). Halaman. 1

Keluar A B C D E F G H Masuk (b) Keluar C D E F G H Masuk (c) Contoh deklarasi antrian : Const max = 5 Var antrian : array [1..max] of char;, depan : integer; x : char; Dengan menggunakan array, maka overflow dapat terjadi jika antrian telah penuh, sementara masih ingin menambah elemen ke dalam antrina. Dengan mengabaikan adanya overflow, maka penambahan elemen baru yang dinyatakan oleh var x dapat diimplementasikan dengan statemen : belakang := belakang + 1; antrian [belakang] := x; Operasi penghapusan bias diimplementasikan dengan ; x := antrian [depan]; depan := depan + 1; 5 5 5 5 E 4 4 D 4 D 4 D 3 3 C 3 C 3 C 2 2 B 2 2 1 1 A 1 1 (a) (b) (c) (d) Pada gambar (a) posisi depan = 1 dan belakang = 0. Pada gambar (b) keadaan setelah penambahan empat buah elemen dimana posisi depan = 1 dan belakang = 4. Pada gambar (c) keadaan setelah penghapusan dua buah elemen dimana posisi depan = 3 dan belakang = 4. Pada gambar (d) keadaan setelah penambahan dua buah elemen diamana posisi depan = 3 dan belakang = 5. Jika akan ditambah elemen baru, maka nilai belakang harus ditambah satu menjadi 6. Sedangkan larik antrian tersebut hanya terdiri dari 6 elemen sehingga tidak bias ditambah lagi meskipun sebenarnya larik tersebut masih kosong di dua tempat. Oleh karena itu dilakukan dengan metoda penggeseran dimana jika ada elemen yang dihapus, maka semua elemen lain digeser sehingga antrian selalu dimulai dari depan = 1. Halaman. 2

x := antrian [1]; for i := 1 to belakang-1 do antrian [ i] := antrian [i +1]; 5 5 5 5 4 4 D 4 4 F 3 3 C 3 3 E 2 2 B 2 D 2 D 1 1 A 1 C 1 C (a) (b) (c) (d) Pada gambar (a) posisi depan = 1 dan belakang = 0. Pada gambar (b) keadaan setelah penambahan empat buah elemen dimana posisi depan = 1 dan belakang = 4. Pada gambar (c) keadaan setelah penghapusan dua buah elemen dimana posisi depan = 1 dan belakang = 2. Pada gambar (d) keadaan setelah penambahan dua buah elemen dimana posisi depan = 1 dan belakang = 4. Cara penggeseran elemen tidak efisien untuk larik berukuran besar. Oleh karena itu dilakukan dengan larik yang menyimpan elemen antrian sebagai larik memutar (circular). Queue Dengan Circular Array Jika menggunakan array untuk queue seperti di atas, maka ketika ada proses pengambilan (dequeue) ada proses pergeseran data. Proses pergeseran data ini pasti memerlukan waktu apalagi jika elemen queue-nya banyak. Oleh karena itu solusi agar proses pergeseran dihilangkan adalah dengan metode circular array. Queue dengan circular array dapat dibayangkan sebagai berikut : =1 =4 5 6 7 9 Atau agar lebih jelas, array di atas dapat dibayangkan ke dalam bentuk seperti lingkaran di bawah ini. 5 1 5 4 9 6 2 7 3 depan = 1 belakang = 4 Aturan-aturan dalam queue yang menggunakan circular array adalah : 1. Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1 : depan=depan + 1. Halaman. 3

2. Proses penambahan elemen sama dengan linear array yaitu nilai belakang ditambah 1 : belakang=belakang + 1. 3. Jika depan = maks dan ada elemen yang akan dihapus, maka nilai depan = 1. 4. Jika belakang = maks dan depan tidak 1 maka jika ada elemen yang akan ditambahkan, nilai belakang=1 5. Jika hanya tinggal 1 elemen di queue (depan = belakang), dan akan dihapus maka depan diisi 0 dan belakang diisi dengan 0 (queue kosong). Front dan Tail akan bergerak maju, jika ; 1. Untuk penambahan. 2. Tail sudah mencapai elemen terakhir array akan memakai elemen pertama array yang telah dihapus. 3. Untuk pngahapusan. 4. Front telah mencapai elemen terakhir array, maka akan menuju elemen pertama jika antrian masih berisi elemen. Keunggulan representasi circular adalah seluruh kapasitas antrian bisa terpakai seleruhnya. Berdasarkan ilustrasi sebelumnya dapat disusun prosedur untuk menambah dan menghapus elemen antrian sebagai berikut ini : Const max_elemen = 5; Type antri = array [1..max_elemen] of char; Var antrian : antri; depan, belakang : integer; Nilai awal untuk depan dan belakang masing-masing 0. := 0; := 0; Proses enqueue data hanya bisa dilakukan jika queue tidak kosong. Ada beberapa hal yang harus diperhatikan ketika akan melakukan enqueue pada circular array, diantaranya adalah : - Kondisi ketika queue masih kosong. Jika ini terjadi, maka posisi depan dan belakang bernilai 0. - Ketika ketika nilai belakang sama dengan maks_queue, maka posisi belakang adalah 0. Ini terjadi ketika posisi depan lebih besar dari 0 (pernah ada dequeue). - Ketika nilai belakang masih lebih kecil dari maks_queue maka posisi belakang ditambah 1 : belakang=belakang+1; Dari ketentuan-ketentuan di atas dapat diimplementasikan operasi Enqueue-nya dalam bahasa Pascal adalah sebagai berikut : procedure Enqueue (var q : antri; x : char); if belakang = max_elemen then belakang := 1 else belakang := belakang + 1; if depan = belakang then Halaman. 4

write ( antrian sudah penuh ); belakang := belakang 1; if belakang = 0 then belakang :=max_elemen; end else q[belakang] := x; Sedangkan proses dequeue hanya bisa dilakukan jika queue dalam keadaan tidak kosong. Ada beberapa kondisi yang harus diperhatikan ketika dequeue elemen queue yaitu : - Kondisi ketika posisi depan sama dengan posisi belakang (queue hanya memiliki 1 elemen) maka nilai depan dan belakang diisi dengan 0 (queue kosong). - Jika posisi depan sama dengan posisi maks_queue maka posisi depan berpindah ke 1. - Selain itu, posisi depan ditambah dengan 1 : depan=depan+1 Impelementasinya dalam bahasa Pascal adalah : function dequeue (var q : antri) : char; if (depan=0) and 9belakang=0) then then write ( antrian kososng ); else dequeue := q [depan]; if depan = max_elemen then depan := 1 else depan := depan + 1; Halaman. 5