QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.

Slides:



Advertisements
Presentasi serupa
Antrian (Queue) Desain dan Analisis Algoritma
Advertisements

Queue (Antrian).
Dr. Anto Satriyo Nugroho, M.Eng
QUEUE II. IMPLEMENTASI QUEUE
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
QUEUE.
LINKED LIST Single Linked List.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Queue.
Pertemuan (6) QUEUE (ANTREAN) IMAM SIBRO MALISI NIM :
Algoritma dan Struktur Data
STACK (Tumpukan).
STACK.
Struktur Data (Data Structure) – IS 2313
Queue.
Queue.
Queue.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Pertemuan ketujuh Struktur data st3telkom.ac.id
Circular Queue.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
ANTRIAN Farid Wajdi Yusuf Pendidikan Teknik Informatika dan Komputer
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
STRUKTUR DATA QUEUE.
STRUKTUR DATA Queue atau Antrian.
Pertemuan : Algoritma & Struktur Data
STACK.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
Queue By Serdiwansyah N. A. 1. Queue Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain.
Struktur Data Materi II LINKED LIST / SENARAI BERKAIT  List: Koleksi dari obyek-obyek homogen dengan sifat setiap elemen, kecuali yang terakhir pasti.
STRUKTUR DATA (2) Single Linked List
Program Studi Teknik Informatika
LINKED LIST by Yohana N.
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA QUIZ.
Program Studi Teknik Informatika
Defri Kurniawan QUEUE Defri Kurniawan
Queue (Antrian).
Struktur Organisasi Data 2
Queue.
STRUKTUR DATA QUEUE (Antrian)
STACK (Tumpukan).
Program Studi Teknik Informatika
Program Studi Teknik Informatika
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
Struktur Data Khoiriya Latifa, M.Kom.
Program Studi Teknik Informatika
Program Studi Teknik Informatika
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Stack.
Algoritme dan Stuktur Data
Queue(Antrian).
Linked List 6.3 & 7.3 NESTED LOOP.
Stack.
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
Algoritma dan Struktur Data
Queue (Antrian).
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
Linear Doubly Linked List
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
STRUKTUR DATA Teknik Informatika S1
Queue Algoritma dan Struktur Data.
QUEUE (Antrian).
SINGLE LINKED LIST (SLL)
Transcript presentasi:

QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan elemen (Dequeue) melalui dua tempat yang berbeda yaitu belakang dan depan, dengan demikian pemrosesan data mengikuti prinsip FIFO (First In First Out), yaitu data yang pertama masuk akan menjadi yang pertama keluar. Dalam dunia nyata contoh queue atau antrian seperti halnya antrian pada loket-loket umumnya, antrian kendaraan di SPBU atau pada pintu tol.

Pada struktur data bentuk queue digambarkan dalam bentuk: Elemen Data Depan Belakang Contoh: 17 28 6 10 8 Depan Belakang Operasi pada queue dapat diimplementasikan dengan menggunakan array, structure (record) dan pointer.

OPERASI-OPERASI PADA QUEUE 1. Membuat queue Mendefinisikan / menginisialisasi kondisi awal queue(kosong) 2. Mengecek queue kosong Mengecek queue dalam kondisi kosong atau tidak? 3. Mengecek queue penuh Mengecek queue dalam kondisi penuh atau tidak? 4. Enqueue Menambah elemen baru pada queue yang berisi Info Baru (IB) dan diletakkan pada posisi paling belakang 5. Dequeue Mengambil elemen queue paling depan dan simpan infonya dalam Info Dequeue (ID) 6. Mencetak isi queue Mencetak seluruh isi queue

Operasi Enqueue Menambah elemen baru yang berisi info baru (IB) dan diletakkan pada posisi paling belakang. Contoh: 17 28 6 10 8 Depan Belakang Queue Isi queue mula-mula: 8 10 6 28 17 Enqueue(15) 15 Isi queue akhir: 8 10 6 28 17 15

Operasi Dequeue Mengambil elemen queue paling depan dan simpan infonya pada Info Dequeue (ID). Contoh: 8 8 17 28 6 10 15 Belakang Depan Queue Isi queue mula-mula: 8 10 6 28 17 15 Dequeue() ID = Isi queue akhir: 10 6 28 17 15

IMPLEMENTASI QUEUE MENGGUNAKAN ARRAY Jumlah elemen queue yang mampu ditampung besarnya tergantung jumlah array pada saat mendefinisikan queue. Index depan selalu sama dengan 0. Contoh: Queue[6] 1 2 3 4 5 28 6 10 8 Depan Belakang Depan=0, Belakang=3 maka isi queu: 8 10 6 28 1 2 3 4 5 Belakang 8 Depan Depan=0, Belakang=0 maka isi queu: 8

Mendefinisikan kondisi awal queue Pada kondisi awal queue dalam keadaan kosong, maka index belakang diberi nilai lebih kecil dari index depan, yaitu -1. Contoh: Queue[6] 1 2 3 4 5 Depan Queue Belakang Depan=0, Belakang= -1 maka isi queue: - (queue kosong) void buatqueue() { belakang = -1; }

Bagaimana kondisi queue jika penuh? 2. Mengecek queue apakah dalam kondisi kosong atau tidak? int queuekosong() { if(belakang == -1) return(1); else return(0); } Bagaimana kondisi queue jika penuh?

Queue dikatakan penuh jika index belakang menunjukkan nilai max-1. 3. Queue penuh Queue dikatakan penuh jika index belakang menunjukkan nilai max-1. Contoh: Queue[6] 1 2 3 4 5 Belakang 17 28 6 10 15 8 Depan Queue Depan=0, Belakang=5 maka isi queue: 8 10 6 28 17 15 (queue penuh) int queuepenuh() { if(belakang == max-1) return(1); else return(0); }

Enqueue Menambah elemen baru yang berisi Info Baru (IB) dan diletakkan pada posisi paling belakang. Caranya: 1. Naikkan nilai belakang 2. Tambahkan Info Baru (IB) pada posisi belakang Contoh: Queue[6] 1 2 3 4 5 17 28 6 10 8 Depan Queue Belakang Depan=0, Belakang=4 Isi queue: 8 10 6 28 17 Enqueue(34) 34 Depan=0, Belakang=5 Isi queue: 8 10 6 28 17 34

5. Dequeue Mengambil elemen queue paling depan dan simpan infonya pada Info Dequeue (ID). Caranya: 1. Ambil elemen paling depan dan simpan pada Info Dequeue (ID) 2. Geser semua isi elemen ke kiri 3. Turunkan nilai belakang Contoh: Queue[6] 1 2 3 4 5 34 Depan Queue 8 10 6 28 17 34 Belakang Depan=0, Belakang=5 Isi queue: 8 10 6 28 17 34 Dequeue() ID = Depan=0, Belakang=4 Isi queue: 10 6 28 17 34

Proses pencetakan dimulai dari index depan hingga belakang Mencetak isi queue Proses pencetakan dimulai dari index depan hingga belakang Contoh: Queue[6] 1 2 3 4 5 8 Belakang 17 28 6 10 34 Depan Queue 8 10 6 28 17 34 Depan=0, Belakang=5 Isi queue: Cetak

Implementasi queue dengan array memiliki kelemahan karena: Penyimpanan data dengan menggunakan array, membuat queue bersifat statis. Artinya jumlah data yang dapat ditampung pada queue terbatas sesuai dengan jumlah array yang disediakan. Namun jika array hanya sebagian saja yang digunakan maka array yang tersisa akan mubajir. Begitu pula jika queue diimplementasi dengan structure/record karena queue masih menggunakan array untuk menyimpan data sedangkan nilai belakang disimpan dalam field tersendiri, sehingga queue masih bersifat statis. Cara untuk mengatasi hal tersebut adalah membuat queue bersifat dinamis yaitu dengan menggunakan pointer dalam bentuk linked list.

IMPLEMENTASI QUEUE MENGGUNAKAN POINTER Queue menggunakan pointer dapat diimplementasi dalam bentuk linked list tunggal (singly linked list) atau dapat juga dalam bentuk linked list ganda (doubly linked list). Pada pembahasan berikut ini implementasi queue menggunakan linked list ganda (doubly linked list). Elemen queue dibuat dalam bentuk node yang terdiri dari field info, kiri dan kanan. Node NULL Kiri Info Kanan Info : Berfungsi untuk menyimpan data yang harus disimpan. Kiri : Berfungsi untuk menyimpan alamat elemen sebelumnya. Kanan: Berfungsi untuk menyimpan alamat elemen berikutnya. Contoh: 8 10 6 28 17 34 Depan Belakang

1. Mendefinisikan kondisi awal queue (kosong) Typedef int tipeinfo; typedef struct node *tipeptr; typedef struct node{tipeinfo info; tipeptr kiri; tipeptr kanan; }; 1. Mendefinisikan kondisi awal queue (kosong) void buatqueue() { depan = NULL; belakang = NULL } 2. Mengecek queue apakah dalam kondisi kosong atau tidak? int queuekosong() { if(depan == NULL) return(1); else return(0); }

3. Enqueue Caranya: Buat node baru beri nama NB. Isi info dengan IB, Kiri dan Kanan NULL. b. Arahkan Belakang->Kanan ke NB dan NB->Kiri ke Belakang. c. Pindahkan Belakang ke NB. Contoh: NB 8 10 6 28 17 Depan 15 Belakang Isi queue mula-mula: 8 10 6 28 17 Enqueue(15) Isi queue setelah enqueue: 8 10 6 28 17 15

4. Dequeue Caranya: Ambil info elemen paling depan dan simpan pada Info Dequeue (ID). b. Tandai node depan dengan Hapus. c. Pindahkan Depan ke Kanan. d. Hapus node yang bernama Hapus dan ganti Depan->kiri dengan NULL Contoh: Hapus 8 15 Belakang 10 6 28 17 8 Depan Isi queue mula-mula: 8 10 6 28 17 15 Dequeue() ID = Isi queue setelah dequeue: 10 6 28 17 15

Proses pencetakan dimulai dari node depan hingga belakang Mencetak isi queue Proses pencetakan dimulai dari node depan hingga belakang Caranya: Letakkan variabel Bantu bertipe pointer di Depan b. Cetak Bantu->info kemudian pindahkan Bantu ke kanan c. Ulangi proses pencetakan hingga Bantu bernilai NULL Contoh: Bantu Depan 15 Belakang 10 6 28 17 8 8 10 6 28 17 15 Cetak Isi queue: