BAB VIII QUEUE (ANTRIAN)

dokumen-dokumen yang mirip
Implementasi Queue menggunakan Array. Imam Fahrur Rozi

05. Double Linked List

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

Algoritma Pemrograman & Struktur Data

Algoritma Dan Struktur Data II. Queue

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

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

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

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

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

LAPORAN PRAKTIKUM RESMI QUEUE

STRUKTUR DATA Pertemuan 1 s.d 8

BAB IV Antrian(Queue)

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

KONSEP POINTER DAN LINKED LIST

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

SENARAI BERANTAI (LINK LIST)

Struktur Data Array. Rijal Fadilah S.Si

ARNA FARIZA YULIANA SETIOWATI

DIG1G3 Implementasi Struktur Data

Single Linked List (1)

Algoritma dan Struktur Data. Ramos Somya

04. Single Linked List

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

LAPORAN PRAKTIKUM IV. Oleh:

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Algoritma Pemrograman dan Struktur Data

Algoritma Dan Struktur Data II

LIST. Dewi Sartika, M.Kom

Algoritma Dan Struktur Data II

Pertemuan 7. REVIEW dan QUIS

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

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

KONSEP POINTER DAN LINKED LIST

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

KONSEP POINTER DAN LINKED LIST

Praktikum Algoritma dan Struktur Data

Algoritma dan Struktur Data. Queue

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

KONSEP POINTER DAN LINKED LIST

Stack. Gambar 1.1 Stack

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

MODUL PEMROGRAMAN 2. Queue (Antrian)

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

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

KONSEP POINTER DAN LINKED LIST

MODUL 6 SINGLE & DOUBLE LINKED LIST

Algoritma Pemrograman & Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

SINGLE LINKED LIST (NON CIRCULAR)

Algoritma dan Struktur Data. Linked List

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Array dan Vector Linked List STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 2 : 23 Juni 2015

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

A. TUJUAN PEMBELAJARAN

BAB III QUEUE (ANTRIAN)

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

KUM 5 IMPLEMENTASI QUEUE

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

Linked List 6.3 & 7.3 NESTED LOOP

Pertemuan VI ANTRIAN (Queue)

QUEUE (ANTRIAN) Depan=1 Belakang=

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

STRUKTUR DATA (2) Single Linked List

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Lab. Teknik Informatika Struktur Data 1

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Gambar 1. Single Linked List

Algoritma dan Struktur Data. Ramos Somya

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

Tutorial - Single Linked List

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

Praktikum 5. Antrian (Queue)

STRUKTUR DATA Pertemuan 1 s.d 8

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Algoritma dan Struktur Data. Pertemuan 7 Linked List

ALGORITMA DAN STRUKTUR DATA

LOGO STRUKTUR DATA QUEUE

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

Struktur Data II. Single Linked List - Non circular

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

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

ABSTRACT DATA TYPE (ADT) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

QUEUE (ANTRIAN) Struktur Data - Queue

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

Stack STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 5 : 6 Juli 2015

BAB VII STACK ( TUMPUKAN)

BAB VI LINKED LIST. Struktur data dinamis sederhana dapat dibagi menjadi empat jenis, yaitu : 1. Linked list 2. Stack 3. Queue 4.

Algoritma dan Struktur Data STACK

Transkripsi:

Modul 8 Struktur Data (Arie) - 1 BAB VIII 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 dengan sisi depan atau front) Jika pada tumpukan dikenal dengan menggunakan prinsip LIFO (Last In First Out), maka pada antrian prinsip yang digunakan adalah FIFO (First In First Out). IMPLEMENTASI ANTRIAN DENGAN ARRAY Karena antrian merupakan suatu kumpulan data, maka tipe data yang sesuai untuk menyajikan antrian adalah menggunakan array atau list (senarai berantai). depan keluar A B C D E F masuk belakang tersebut berisi 6 elemen, yaitu A, B, C, D, E, dan F. Elemen A terletak dibagian depan antrian dan elemen F terletak di bagian belakang antrian. Jika terdapat elemen baru yang akan masuk, maka elemen tersebut akan diletakkan disebelah kanan F. Jika ada elemen yang akan dihapus, maka A akan dihapus terlebih dahulu. depan keluar A B C D E F G H masuk dengan penambahan elemen baru, yaitu G dan H. depan belakang keluar C D E F G H masuk belakang dengan penghapusan elemen antrian, yaitu A dan B.

Modul 8 Struktur Data (Arie) - 2 Seperti dalam tumpukan atau stack, maka di dalam antrian juga dikenal dua operasi dasar yaitu menambah elemen baru yang akan diletakkan di bagian belakang antrian dan menghapus elemen yang terletak di bagian depan antrian. Selain itu juga harus dilihat kondisi antrian mempunyai isi atau masih kosong. #define MAXN 6 typedef enum NOT_OK, OK Tboolean; typedef struct Titem array[maxn]; int first; int last; int number_of_items; Tqueue; Elemen antrian dinyatakan dalam tipe integer yang semuanya terdapat dalam struktur. Variabel first menunjukkan posisi elemen pertama dalam array, dan variabel last menunjukkan posisi elemen terakhir dalam array. Untuk menambah elemen baru dan mengambil elemen dari antrian diperlukan deklarasi. void initialize_queue (Tqueue *Pqueue) Pqueue->first=0; Pqueue->last=-1; Pqueue->number_of_items=0; Tboolean enqueue (Tqueue *Pqueue, Titem item) if (Pqueue->number_of_items >= MAXN) return (NOT_OK); Pqueue->last++; if (Pqueue->last > MAXN 1) Pqueue->last=0; Pqueue->array[Pqueue->last]=item; Pqueue->number_of_items++; return (OK); Tboolean dequeue (Tqueue *Pqueue, Titem *Pitem) if (Pqueue->number_of_items==0) return (NOT_OK); *Pitem=Pqueue->array[Pqueue->first++]; if (Pqueue->first > MAXN 1) Pqueue->first=0; Pqueue->number_of_items--; return (OK);

Modul 8 Struktur Data (Arie) - 3 Kondisi awal sebuah antrian dapat digambarkan sebagai berikut. 6 5 4 3 2 1 first = 1 last = 0 Pada kondisi awal ini antrian terdiri dari last dibuat = 0 dan first dibuat = 1. dikatakan kosong jika last < first. Banyaknya elemen yang terdapat dalam antrian dinyatakan sebagai last first + 1. 6 5 4 D last = 4 3 C 2 B 1 A first = 1 Dengan MAXN = 6 antrian telah terisi empat buah data yaitu A, B, C, dan D. Kondisi first = 1 dan last = 4. 6 5 4 D last = 4 3 C first = 3 2 1 Pada antrian dilakukan penghapusan dua buah data yaitu A dan B. Sehingga kondisi first = 3 dan last = 4. 6 F last = 6 5 E 4 D 3 C first = 3 2 1 Pada antrian dilakukan penambahan dua buah data yaitu E dan F. Elemen E akan diletakkan setelah D dan elemen F akan diletakkan setelah E. Sehingga kondisi first = 3 dan last = 6. Dapat diperoleh jumlah elemen yaitu 6 3 + 1 = 4. Dengan pembatasan data maksimal 6 elemen akan terdapat sisa 2 elemen. Jika pada antrian akan ditambahkan elemen yang baru, misal G, elemen G akan diletakkan setelah elemen F. Hal ini akan menyebabkan elemen yang baru tersebut tidak dapat masuk (MAXN = 6), meskipun masih tersisa 2 buah elemen yang kosong.

Modul 8 Struktur Data (Arie) - 4 IMPLEMENTASI ANTRIAN DENGAN POINTER Pada prinsipnya, antrian dengan pointer akan sama dengan antrian yang menggunakan array. Penambahan akan selalu dilakukan di belakang antrian dan penghapusan akan selalu dilakukan pada elemen dengan posisi paling depan. sebenarnya merupakan bentuk khusus dari suatu senarai berantai (linked list). Pada antrian bisa digunakan dua variabel yang menyimpan posisi elemen paling depan dan elemen paling belakang. Jika menggunakan senarai berantai maka dengan dua pointer yang menunjuk elemen kepala (paling depan) dan elemen ekor (paling belakang) dapat dibentuk antrian. struct queuenode char data; struct queuenode * nextptr; ; typedef struct queuenode QUEUENODE; typedef QUEUENODE *QUEUENODEPTR; QUEUENODEPTR headptr = NULL, tailptr = NULL; Untuk menambah elemen baru yang selalu diletakkan di belakang senarai. void enqueue (QUEUENODEPTR *headptr, QUEUENODEPTR *tailptr, char value) QUEUENODEPTR newptr = malloc (sizeof(queuenode)); if (newptr!= NULL) newptr->data=value; newptr->nextptr=null; if (isempty(*headptr)) *headptr=newptr; (*tailptr)->nextptr=newptr; *tailptr=newptr; printf( %c not inserted. No memory available. \n, value); Untuk menghapus akan dilakukan pemeriksaan terlebih dahulu antrian dalam keadaan kosong atau tidak. int isempty (QUEUENODEPTR headptr) return headptr==null;

Modul 8 Struktur Data (Arie) - 5 CONTOH SOAL : Soal 1 Buatlah program dalam bentuk menu untuk mengimplementasikan antrian. Menu tersebut berisi memasukkan data, menghapus data, menampilkan data, dan keluar //Program : queue1 # include <iostream.h> # include <conio.h> class Linked_list_Queue private: struct node int data; node *next; ; node *rear; node *entry; node *print; node *front; public: Linked_list_Queue( ); ; void Delete( ); void Insert( ); void print_list( ); void show_working( ); Linked_list_Queue::Linked_list_Queue ( ) rear=null; front=null; void Linked_list_Queue::Insert( ) int num; cout<<"\n\n\n\n\n\t Masukkan angka dalam Queue : "; cin>>num; entry=new node; if(rear==null) entry->data=num; entry->next=null; rear=entry; front=rear; entry->data=num; entry->next=null; rear->next=entry;

Modul 8 Struktur Data (Arie) - 6 rear=entry; cout<<"\n\n\t *** "<<num<<" sudah masuk dalam Queue."<<endl; cout<<"\n\n\n\t\t Pres any key to return to Menu. "; getch( ); void Linked_list_Queue::Delete( ) if(front==null) cout<<"\n\n\n\t *** Error : Queue is empty. \n"<<endl; int deleted_element=front->data; node *temp; temp=front; front=front->next; delete temp; cout<<"\n\n\n\t *** "<<deleted_element<<" dihapus dari Queue."<<endl; cout<<"\n\n\n\t\t Pres any key to return to Menu. "; getch( ); void Linked_list_Queue::print_list( ) print=front; if(print!=null) cout<<"\n\n\n\n\n\t Angka-angka yang ada dalam Queue adalah : \n"<<endl; cout<<"\n\n\n\n\n\t *** Tidak ada yang ditampilkan. "<<endl; while(print!=null) cout<<"\t "<<print->data<<endl; print=print->next; cout<<"\n\n\n\t\t Pres any key to return to Menu. "; getch( ); void Linked_list_Queue ::show_working( ) char Key=NULL; do clrscr( ); gotoxy(5,5); gotoxy(10,8); cout<<"pilih salah satu menu :"<<endl; gotoxy(15,10); cout<<"- Press \'I\' to Masukkan data dalam Queue"<<endl; gotoxy(15,12); cout<<"- Press \'D\' to Hapus data dari Queue"<<endl; gotoxy(15,14); cout<<"- Press \'P\' to Tampilkan data dari Queue"<<endl; gotoxy(15,16);

Modul 8 Struktur Data (Arie) - 7 cout<<"- Press \'E\' to Exit"<<endl; Input: gotoxy(10,20); cout<<" "; gotoxy(10,20); cout<<"masukkan Pilihan : "; Key=getche( ); if(int(key)==27 Key=='e' Key=='E') break; if(key=='i' Key=='I') Insert( ); if(key=='d' Key=='D') Delete( ); if(key=='p' Key=='P') print_list( ); goto Input; while(1); int main( ) Linked_list_Queue obj; obj.show_working( ); return 0; SOAL LATIHAN : Buatlah program untuk memasukkan dan mengeluarkan data dalam antrian. Contoh ada di file : queue2.exe Save dengan nama file : qu1_nim (4 digit nim terakhir)