QUEUE Antrian 1. DEFINISI

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

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Struktur Data. Queue (Antrian)

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

Variasi List Linier (Bagian 2)

STACK Tumpukan TOP TOP BOTTOM BOTTOM

Modul Praktikum. Struktur Data. Oleh: M. Fachrurrozi, MT. Comlabs Fakultas Ilmu Komputer. Universitas Sriwijaya

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

LIST LINIER 1. DEFINISI

MODUL PRAKTIKUM STRUKTUR DATA

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

LAPORAN PRAKTIKUM RESMI QUEUE

IKG2A3/ Pemrograman Terstruktur 2

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

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

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

BAB IX LINKED LIST (SENARAI BERANTAI)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

MODUL 6 SINGLE & DOUBLE LINKED LIST

MODUL PRAKTIKUM STRUKTUR DATA

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

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

Struktur Data Array. Rijal Fadilah S.Si

Representasi Logic List Linier

Algoritma Pemrograman & 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

Mesin Karakter dan Mesin Kata

Lab. Teknik Informatika Struktur Data 1

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

BAB IV Antrian(Queue)

QUEUE (ANTRIAN) Struktur Data - Queue

Pohon Biner (Bagian 1)

A. TUJUAN PEMBELAJARAN

KUM 5 IMPLEMENTASI QUEUE

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

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

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

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

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

LOGO STRUKTUR DATA QUEUE

BAB IX LINKED LIST (SENARAI BERANTAI)

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

SINGLE LINKED LIST (NON CIRCULAR)

Seharusnya. if (antrian.tail==max-1) return 0;

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

SENARAI BERANTAI (LINK LIST)

Algoritma Dan Struktur Data II. Queue

A. Bagian I. Studi Kasus

Algoritma Dan Struktur Data II

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

LAPORAN PRAKTIKUM IX. Oleh:

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

BAB III QUEUE (ANTRIAN)

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

BAB II STACK Atau TUMPUKAN

Pengantar List Linier

ARNA FARIZA YULIANA SETIOWATI

Pertemuan 7. REVIEW dan QUIS

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack

Algoritma dan Struktur Data. Ramos Somya

KONSEP POINTER DAN LINKED LIST

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

Algoritma dan Struktur Data STACK

Praktikum Algoritma dan Struktur Data

Algoritma dan Struktur Data

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

Bagian I. Studi Kasus [82] Tanda tangan:

DAFT AR ISI. LEMBAR PENGESAHAN PEMBIMBING...ii. LEMBAR PERNYATAAN KEASLLAN HASIL TUGAS AKHIR...iii. LEMBAR PENGESAHAN PENGUJI...iv

Praktikum 5. Antrian (Queue)

Linked List 6.3 & 7.3 NESTED LOOP

Algoritma dan Struktur Data. Queue

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

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

Review : Sifat Implementasi Linear List dengan Array

Algoritma dan Struktur Data. Ramos Somya

Pendahuluan Struktur Data. Nisa ul Hafidhoh

05. Double Linked List

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

Struktur Data II. Single Linked List - Non circular

KONSEP POINTER DAN LINKED LIST

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

STRUKTUR DATA (2) Single Linked List

DIG1G3 Implementasi Struktur Data

ALGORITMA & PEMROGRAMAN

Transkripsi:

QUEUE Antrian 1. DEFINISI QUEUE (Antrian) adalah list linier yang : 1. dikenali elemen pertama () dan elemen terakhirnya (), 2. aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut: - Penyisipan selalu dilakukan setelah elemen terakhir - Penghapusan selalu dilakukan pada elemen pertama 3. satu elemen dengan yang lain dapat diakses melalui informasi NEXT Struktur data ini banyak dipakai dalam informatika, misalnya untuk merepresentasi : - antrian job yang harus ditangani oleh sistem operasi - antrian dalam dunia nyata. Maka secara lojik, sebuah QUEUE dapat digambarkan sebagai list linier yang setiap elemennya adalah type ElmtQ : < Info : InfoType, Next :address> dengan InfoType adalah sebuah type terdefinisi yang menentukan informasi yang disimpan pada setiap elemen queue, dan address adalah "alamat" dari elemen Selain itu alamat elemen pertama () dan elemen terakhir() dicatat : Maka jika Q adalah Queue dan P adalah adaress, penulisan untuk Queue adalah : Head(Q),Tail(Q), Info(Head(Q)), Info(Tail(Q)) QUEUE dengan 3 elemen QUEUE kosong QUEUE dengan 1 elemen IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 1

DEFINISI FUNGSIONAL QUEUE Diberikan Q adalah QUEUE dengan elemen ElmtQ maka definisi fungsional antrian adalah: IsEmpty: Q boolean { Test terhadap Q: true jika Q kosong, false jika Q tidak kosong} IsFull : Q boolean { Test terhadap Q: true jika memori Q sudah penuh, false jika memori Q tidak penuh} NBElmt(Q) : Q integer { Mengirimkan banyaknya elemen Q } CreateEmpty : Q {Membuat sebuah antrian kosong } Add :ElmtQ x Q Q { Menambahkankan sebuah elemen setelah elemen ekor QUEUE } Del : Q Q x ElmtQ { Menghapus kepala QUEUE, } { mungkin Queue menjadi kosong} Implementasi QUEUE dengan tabel : Memori tempat penyimpan elemen adalah sebuah tabel dengan indeks 1.. IdxMax. IdxMax dapat juga dipetakan ke kapasitas Queue. Representasi field Next: Jika i adalah address sebuah elemen, maka suksesor i adalah Next dari elemen Queue. Alternatif I : Tabel dengan hanya representasi adalah indeks elemen terakhir, selalu diset sama dengan 1 jika Queue tidak kosong. Jika Queue kosong, maka =0. Ilustrasi Queue tidak kosong, dengan 5 elemen : IdxMax Ilustrasi Queue kosong: IdxMax 0 Algoritma paling sederhana untuk penambahan elemen jika masih ada tempat adalah dengan memajukan. Kasus khusus untuk Queue kosong karena harus diset nilainya menjadi 1. Algoritma paling sederhana dan naif untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen, geser semua elemen mulai dari +1 s/d (jika ada), kemudian mundur. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan dan dengan IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 2

DEFINISI. Algoritma ini mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi tidak efisien. IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 3

Alternatif II : Tabel dengan representasi dan, bergerak ketika sebuah elemen dihapus jika Queue tidak kosong. Jika Queue kosong, maka =0. Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama sedang berada di posisi awal: IdxMax Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama tidak berada di posisi awal. Hal ini terjadi akibat algoritma penghapusan yang dilakukan (lihat keterangan) IdxMax Ilustrasi Queue kosong: IdxMax 0 Algoritma untuk penambahan elemen sama dengan alternatif I: jika masih ada tempat adalah dengan memajukan. Kasus khusus untuk Queue kosong karena harus diset nilainya menjadi 1. Algoritmanya sama dengan alternatif I Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen, kemudian maju. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan dan dengan DEFINISI. Algoritma ini TIDAK mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi efisien. Namun suatu saat terjadi keadaan Queue penuh tetapi semu sebagai berikut : IdxMax x x x Jika keadaan ini terjadi, haruslah dilakukan aksi menggeser elemen untuk menciptakan ruangan kosong. Pergeseran hanya dilakukan jika dan hanya jika sudah mencapai IndexMax. IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 4

Alternatif III : Tabel dengan representasi dan yang berputar mengelilingi indeks tabel dari awal sampai akhir, kemudian kembali ke awal. Jika Queue kosong, maka =0. Representasi ini memungkinkan tidak perlu lagi ada pergeseran yang harus dilakukan seperti pada alternatif II pada saat penambahan elemen. Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan sedang berada di posisi awal: IdxMax Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan tidak berada di posisi awal, tetapi masih lebih kecil atau sebelum. Hal ini terjadi akibat algoritma penghapusan/penambahan yang dilakukan (lihat keterangan). IdxMax Ilustrasi Queue tidak kosong, dengan 5 elemen, tidak berada di posisi awal, tetapi lebih besar atau sesudah. Hal ini terjadi akibat algoritma penghapusan/penambahan yang dilakukan (lihat keterangan) IdxMax Algoritma untuk penambahan elemen: jika masih ada tempat adalah dengan memajukan. Tapi jika sudah mencapai IdxMax, maka suksesor dari IdxMax adalah 1 sehingga yang baru adalah 1. Jika belum mencapai IdxMax, maka algoritma penambahan elemen sama dengan alternatif II. Kasus khusus untuk Queue kosong karena harus diset nilainya menjadi 1. Algoritma untuk penghapusan elemen jika Queue tidak kosong: ambil nilai elemen, kemudian maju. Penentuan suatu suksesor dari indkes yang diubah/ maju dibuat Seperti pada algoritma penambahan elemen: jika mencapai IdxMAx, maka suksesor dari adalah 1. Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan dan dengan DEFINISI. Algoritma ini efisien karena tidak perlu pergeseran, dan seringkali strategi pemakaian tabel semacam ini disebut sebagai circular buffer, dimana tabel penyimpan elemen dianggap sebagai buffer. Salah satu variasi dari representasi pada alternatif III adalah : menggantikan representasi dengan COUNT, yaitu banyaknya elemen Queue. Dengan IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 5

representasi ini, banyaknya elemen diketahui secara eksplisit, tetapi untuk melakukan penambahan elemen harus dilakukan kalkulasi. Buatlah sebagai latihan. IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 6

ADT Queue dalam Bahasa C, REPRESENTASI DENGAN TABEL /* File : queue.h */ /* deklarasi Queue yang diimplementasi dengan tabel kontigu */ /* dan adalah alamat elemen pertama dan terakhir */ /* Queue mampu menampung MaxEl buah elemen */ #ifndef queue_h #define queue_h #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* indeks tabel */ /* Contoh deklarasi variabel bertype Queue : */ /*Versi I: tabel dinamik,head dan Tail eksplisit, ukuran disimpan */ typedef struct { infotype * T; /* tabel penyimpan elemen */ address ; /* alamat penghapusan */ address ; /* alamat penambahan */ int MaxEl; /* MAx elemen queue */ } Queue; /*Definisi Queue kosong: Head=Nil; =Nil.*/ /* Catatan implementasi: T[0] tidak pernah dipakai */ /**** AKSES (Selektor) *****/ /* Jika Q adalah Queue, maka akses elemen : */ #define Head(Q) (Q). #define Tail(Q) (Q). #define InfoHead(Q) (Q).T[(Q).] #define InfoTail(Q) (Q).T[(Q).] #define MaxEl(Q) (Q).MaxEl /* Prototype */ boolean IsEmpty (Queue Q); /* Mengirim true jika Q kosong: lihat definisi di atas */ boolean IsFull(Queue Q); /*Mengirim true jika tabel penampung elemen Q sudah penuh */ /* yaitu mengandung MaxEl elemen int NBElmt(Queue Q); /* Mengirimkan banyaknya elemen queue. Mengirimkan 0 jika Q kosong */ /**** Kreator ***/ void CreateEmpty(Queue *Q, int Max); /* I.S. sembarang */ /* F.S. Sebuah Q kosong terbentuk dan salah satu kondisi sbb: */ /* Jika alokasi berhasil, Tabel memori dialokasi berukuran Max */ /* atau : jika alokasi gagal, Q kosong dg Maksimum elemen=0 */ /* Proses : Melakukan alokasi,membuat sebuah Q kosong */ /**** Destruktor ***/ void DeAlokasi(Queue *Q); /* Proses: Mengembalikan memori Q */ /* I.S. Q pernah dialokasi */ /* F.S. Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ /**** Primitif Add/Delete ****/ void Add (Queue * Q, infotype X); /* Proses: Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi yang baru, "maju" */ /* Jika Tail(Q)=MaxEl+1 maka geser isi tabel, shg Head(Q)=1 */ void Del(Queue * Q, infotype* X); /* Proses: Menghapus X pada Q dengan aturan FIFO */ /* I.S. Q tidak mungkin kosong */ /* F.S. X = nilai elemen pd I.S., "maju";q mungkin kosong */ #endif IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 7

/* File :queues.h */ /* deklarasi Queue yang diimplementasi dengan tabel kontigu */ /* dan adalah alamat elemen pertama dan terakhir */ /* Kapasitas Queue=MaxEl buah elemen, dan indeks dibuat sirkuler */ #ifndef queues_h #define queues_h #include "boolean.h" #include <stdlib.h> #define Nil 0 /* Definisi elemen dan address */ typedef int infotype; typedef int address; /* indeks tabel */ /* Contoh deklarasi variabel bertype Queue : */ /*Versi I: tabel dinamik,head dan Tail eksplisit, ukuran disimpan */ typedef struct { infotype * T; /* tabel penyimpan elemen */ address ; /* alamat penghapusan */ address ; /* alamat penambahan */ int MaxEl; /* MAx elemen queue */ } Queue; /*Definisi Queue kosong: Head=Nil; =Nil.*/ /* Catatan implementasi: T[0] tidak pernah dipakai */ /**** AKSES (Selektor) *****/ /* Jika Q adalah Queue, maka akses elemen : */ #define Head(Q) (Q). #define Tail(Q) (Q). #define InfoHead(Q) (Q).T[(Q).] #define InfoTail(Q) (Q).T[(Q).] #define MaxEl(Q) (Q).MaxEl /* Prototype */ boolean IsEmpty (Queue Q); /* Mengirim true jika Q kosong: lihat definisi di atas */ boolean IsFull(Queue Q); /*Mengirim true jika tabel penampung elemen Q sudah penuh */ /* yaitu mengandung MaxEl elemen */ int NBElmt(Queue Q); /* Mengirimkan banyaknya elemen queue. Mengirimkan 0 jika Q kosong */ /**** Kreator ***/ void CreateEmpty(Queue *Q, int Max); /* I.S. sembarang */ /* F.S. Sebuah Q kosong terbentuk dan salah satu kondisi sbb: */ /* Jika alokasi berhasil, Tabel memori dialokasi berukuran Max */ /* atau : jika alokasi gagal, Q kosong dg Maksimum elemen=0 */ /* Proses : Melakukan alokasi,membuat sebuah Q kosong */ /**** Destruktor ***/ void DeAlokasi(Queue *Q); /* Proses: Mengembalikan memori Q */ /* I.S. Q pernah dialokasi */ /* F.S. Q menjadi tidak terdefinisi lagi, MaxEl(Q) diset 0 */ /**** Primitif Add/Delete ****/ void Add (Queue * Q, infotype X); /* Proses: Menambahkan X pada Q dengan aturan FIFO */ /* I.S. Q mungkin kosong, tabel penampung elemen Q TIDAK penuh */ /* F.S. X menjadi yang baru, "maju" */ /* Jika Tail(Q)=MaxEl+1 maka Tail(Q) diset =1 */ void Del(Queue * Q, infotype* X); /* Proses: Menghapus X pada Q dengan aturan FIFO */ /* I.S. Q tidak mungkin kosong */ /* F.S. X = nilai elemen pd I.S.,Jika Head(Q)=MaxEl+1, */ /* Head(Q) diset=1; Q mungkin kosong */ #endif IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 8

QUEUE Dengan Representasi Berkait IL/6_Adtqv2C/Definisi Struktur Queue secara kontigu 06/16/03 9:39 AM 9