Praktikum 5. Antrian (Queue)

dokumen-dokumen yang mirip
A. TUJUAN PEMBELAJARAN

BAB IV Antrian(Queue)

ARNA FARIZA YULIANA SETIOWATI

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma Dan Struktur Data II

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

Algoritma dan Struktur Data. Ramos Somya

05. Double Linked List

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Linked List 6.3 & 7.3 NESTED LOOP

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

LAPORAN PRAKTIKUM RESMI QUEUE

BAB III QUEUE (ANTRIAN)

KONSEP POINTER DAN LINKED LIST

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

SINGLE LINKED LIST (NON CIRCULAR)

Pencarian (Searching)

Algoritma Pemrograman & Struktur Data

QUEUE (ANTRIAN) Depan=1 Belakang=

Algoritma Dan Struktur Data II

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

Algoritma dan Struktur Data. Linked List

04. Single Linked List

Algoritma dan Struktur Data. Ramos Somya

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data. Pertemuan 7 Linked List

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

KUM 5 IMPLEMENTASI QUEUE

A. TUJUAN PEMBELAJARAN

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

KONSEP POINTER DAN LINKED LIST

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

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Single Linked List (1)

Praktikum Algoritma dan Struktur Data

# NINE Queue dengan Array

Struktur Data Array. Rijal Fadilah S.Si

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

MODUL PEMROGRAMAN 2. Queue (Antrian)

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

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

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

Algoritma Dan Struktur Data II. Queue

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Praktikum 4. Tumpukan (Stack)

MODUL 6 SINGLE & DOUBLE LINKED LIST

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

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

A. TUJUAN PEMBELAJARAN

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

Algoritma dan Struktur Data

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

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

Penambahan Simpul (Node)

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

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Algoritme dan Pemrograman

DIG1G3 Implementasi Struktur Data

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

Tutorial - Single Linked List

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

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

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

Algoritme dan Pemrograman

BAB VIII QUEUE (ANTRIAN)

Stack. Gambar 1.1 Stack

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

LIST. Dewi Sartika, M.Kom

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

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

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

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

STRUKTUR DATA Pertemuan 6

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

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Stack using Array. Alfa Faridh Suni, S.T., M.T. PTIK

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

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

QUEUE Antrian 1. DEFINISI

ALGORITMA DAN STRUKTUR DATA

BAB IX LINKED LIST (SENARAI BERANTAI)

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

S TA C K Sunu Wibirama

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

Struktur Data II. Single Linked List - Non circular

Praktikum 1. Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa : tipe_data nama_var[ukuran];

Review : Sifat Implementasi Linear List dengan Array

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Struct Lanjutan: Studi Kasus

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

SENARAI BERANTAI (LINK LIST)

Konsep Pemrograman. Bab 14. Struktur 1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

ARNA FARIZA YULIANA SETIOWATI

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

STRUKTUR DATA (2) Single Linked List

Tumpukan(Stack)!! " # $ %&' $ %& ( ) ( * +, / ( (

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

Transkripsi:

Praktikum 5 Antrian (Queue) POKOK BAHASAN: Konsep antrian Struktur antrian Implementasi antrian dalam Bahasa C TUJUAN BELAJAR: Setelah melakukan praktikum dalam bab ini, mahasiswa diharapkan mampu: Memahami stuktur data yang digunakan pada antrian baik yang berupa array maupun linked list Memahami karakteristik antrian dan kondisi yang ada yaitu queue dalam keadaan kosong atau penuh Membuat diagram alir dan mengimplementasikan antrian pada suatu permasalahan DASAR TEORI: Antrian (queue) adalah konsep penyimpanan sekumpulan data yang sering digunakan. Pada antrian data dapat disimpan dalam array atau linked list. Pada antrian, penunjuk posisi depan dan belakang harus disimpan. Apabila akan menambah data pada antrian maka menaikkan penunjuk belakang dan meletakkan data pada posisi tersebut. Apabila akan menghapus data pada antrian maka dihapus pada posisi depan dan menaikkan penunjuk depan. Karakteristik penting dari antrian adalah : 1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian 2. Front (penunjuk elemen terdepan dari antrian) 56

PRAKTIKUM 5 ANTRIAN (QUEUE) 57 3. Rear (penunjuk elemen terakhir dari antrian) 4. Count (Jumlah elemen pada antrian) 5. Kondisi antrian Kondisi antrian yang harus diperhatikan adalah ; 1. Penuh Bila elemen pada antrian mencapai kapasitas maksimum antrian. Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan Overflow. 2. Kosong Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Overflow. 1. ANTRIAN DENGAN ARRAY Pada implementasi antrian dengan array, digunakan sejumlah array MAX untuk menyimpan data. Untuk menunjuk bagian depan dan bagian belakang digunakan variable Front dan Rear. Bila antrian kosong, nilainya diset -1. Untuk operasi penambahan dan penghapusan diimplementasikan dua fungsi yaitu Tambah() dan Hapus(). Pada saat menambah elemen baru pada antrian, pertama kali dicek apakah penambahan tersebut dimungkinkan atau tidak. Karena indeks array dimulai dengan 0 maka maksimum data yang dapat disimpan pada antrian adalah MAX-1. Jika semua elemen menempati ruang array maka antrian dalam kondisi penuh. Apabila data masih dapat ditambahkan pada antrian maka variable Rear dinaikkan satu dan data baru disimpan pada array. Apabila data baru ditambahkan ke antrian untuk pertama kali (dimana variable Front bernilai -1) maka variable Front diset 0 yang menandakan antrian tidak lagi kosong. Sebelum menghapus elemen dari antrian harus dipastikan apakah elemen tersedia untuk penghapusan. Jika tidak maka antrian dalam kondisi kosong. Sebaliknya bila tersedia data pada array maka dapat dilakukan penghapusan dan variable Front

PRAKTIKUM 5 ANTRIAN (QUEUE) 58 dinaikkan. Apabila nilai variable Front dan Rear sama (yang berarti antrian dalam keadaan kosong) maka Front dan Rear direset -1. Misalnya akan dilakukan penambahan data pada antrian sampai semua array terisi. Pada kondisi ini nilai Rear menjadi MAX-1. Misalnya dilakukan penghapusan 5 elemen, maka antrian dikatakan dalam kondisi penuh meskipun 5 array pertama kosong. Untuk mengatasi kondisi ini maka diimplmentasikan antrian sebagai antrian sirkular (circular queue). Sehingga selama penambahan, jika sudah mencapai akhir array dan jika awal array kosong (sebagai akibat dari penghapusan) maka elemen baru ditambahkan pada awal array. 2. ARRAY DENGAN LINKED LIST Array yang digunakan untuk mengimplementasikan antrian dideklarasikan mempunyai ukuran MAX. Ukuran ini ditentukan pada saat menulis program, tidak dapat diubah pada saat program berjalan. Sehingga pada saat menulis program, harus ditentukan ukuran memori maksimum yang diperlukan untuk membangun array. Hal ini berhugungan dengan deklarasi ruang memori yang tersedia. Jika jumlah elemen yang dapat disimpan dalam antrian kecil, maka banyak ruang memori yang tidak digunakan. Sebaliknya, jika jumlah elemen yang akan disimpan pada antrian terlalu banyak, maka menyebabkan overflow. Untuk menghindari hal tersebut terjadi dan keterbatasan memory maka digunakan struktur data yang disebut linked list. 3. STUDI KASUS : SIMULASI TEMPAT PARKIR Ada suatu tempat parkir yang hanya bisa memuat mobil dalam satu baris, jumlah mobil yang bisa masuk dibatasi 10 mobil. Mobil masuk lewat pintu Utara (belakang) dan keluar lewat pintu Selatan (depan). Setiap mobil yang masuk diberi nomor. Jika mobil yang berada paling depan (di sisi paling Selatan) akan keluar maka mobil tersebut segera bisa keluar. Tetapi jika mobil yang akan keluar adalah mobil yang di tengah, maka mobil yang terletak di depannya (di sebelah Selatan) harus dikeluarkan sementara.

PRAKTIKUM 5 ANTRIAN (QUEUE) 59 Setelah mobil yang dimaksud keluar, maka mobil yang dikeluarkan sementara tadi dimasukkan kembali ke tempat parkir dengan susunan seperti semula. Sehingga mobil yang semula berada paling depan tetap berada pada posisinya semula. Mobil-mobil yang terletak di sebelah Utaranya mobil yang keluar tadi digeser maju ke depan, sehingga bagian kosong selalu berada pada pintu Utara (belakang). Utara 7 6 5 4 3 2 1 Selatan Mobil Nomor 4 keluar, maka mobil nomor 1, 2 dan 3 dikeluarkan sementara Utara 7 6 5 Selatan 3 2 1 Mobil nomor 1, 2 dan 3 diletakkan di tempat semula, mobil nomor 5, 6 dan 7 digeser ke selatan. Utara Selatan 7 6 5 3 2 1 Dengan memperhatikan persoalan di atas, sebenarnya simulasi ini selain berisi antrian (queue) juga berisi tumpukan (stack), yakni pada saat sebuah mobil yang berada di tengah akan dikeluarkan, maka semua mobil yang ada di sebelah Selatannya ditumpuk (di-push) di tempat penampungan sementara. Baru setelah mobil yang dimaksud keluar, maka semua mobil yang berada di tempat penampungan sementara dipop kembali. Dengan cara ini semua mobil akan mempunyai posisi yang sama seperti sebelum suatu mobil dikeluarkan dari tempat parkir. TUGAS PENDAHULUAN: 1. Buatlah flowchart untuk operasi penambahan dan penghapusan data pada antrian dengan menggunakan array. 2. Buatlah flowchart untuk operasi penambahan dan penghapusan data pada antrian dengan menggunakan circular queue. 3. Buatlah flowchart untuk operasi penambahan dan penghapusan data pada antrian dengan menggunakan linked list.

PRAKTIKUM 5 ANTRIAN (QUEUE) 60 PERCOBAAN: 1. Buatlah workspace menggunakan Visual C++. 2. Buatlah project untuk praktikum KELIMA. 3. Cobalah untuk masing-masing percobaan di bawah. 4. Implementasikan flowchart simulasi tempat parker yang Anda buat pada Tugas Pendahuluan. Percobaan 1 : Implementasi antrian dengan array #include <stdio.h> #define MAX 10 typedef struct int Item[MAX]; int Front; int Rear; int Count; Queue; // Inisialisasi antrian void Inisialisasi(Queue *q) q->front = q->rear = -1; q->count = 0; // Prosedur untuk menyisipkan data pada antrian void Tambah(Queue *q, int item) if (q->rear == MAX-1) printf ("\nantrian Penuh"); return ; q->rear++; q->item[q->rear] = item; q->count++; if (q->front == -1) q->front = 0;

PRAKTIKUM 5 ANTRIAN (QUEUE) 61 // Prosedur untuk menghapus data dari antrian int Hapus(Queue *q) int data ; if (q->front == -1) printf ("\nantrian Kosong"); return NULL; data = q->item[q->front]; q->count--; if (q->front == q->rear) q->front = q->rear = -1; q->front++; return data; void Tampil(Queue *q) for(int i=0; i<q->count; i++) printf("\ndata : %d", q->item[i]); void main() Queue q; int data; Inisialisasi(&q); Tambah(&q,11); Tambah(&q,12); Tambah(&q,13); Tambah(&q,14); Tambah(&q,15); Tambah(&q,16); Tambah(&q,17); Tambah(&q,18); Tambah(&q,19); Tambah(&q,20); Tambah(&q,21); Tampil(&q); printf("\nhapus Item = %d ", data); printf("\nhapus Item = %d ", data); printf("\n Hapus Item = %d ", data); Tampil(&q);

PRAKTIKUM 5 ANTRIAN (QUEUE) 62 Percobaan 2 : Implementasi circular queue #include <stdio.h> #define MAX 10 typedef struct int Item[MAX]; int Front; int Rear; int Count; Queue; // Inisialisasi antrian void Inisialisasi(Queue *q) q->front = q->rear = -1; q->count = 0; // Prosedur untuk menyisipkan data pada antrian void Tambah(Queue *q, int item) if ((q->rear == MAX-1 && q->front == 0) (q->rear + 1 == q- >Front)) printf ("\nantrian Penuh"); return ; if (q->rear == MAX - 1) q->rear = 0; q->rear++; q->item[q->rear] = item; q->count++; if (q->front == -1) q->front = 0;

PRAKTIKUM 5 ANTRIAN (QUEUE) 63 // Prosedur untuk menghapus data dari antrian int Hapus(Queue *q) int data ; if (q->front == -1) printf ("\nantrian Kosong"); return NULL; data = q->item[q->front]; q->count--; if (q->front == q->rear) q->front = q->rear = -1; if (q->front == MAX-1) q->front = 0; q->front++; return data; void Tampil(Queue *q) for(int i=0; i<q->count; i++) printf("\ndata : %d", q->item[i]); void main() Queue q; int data; Inisialisasi(&q); Tambah(&q,11); Tambah(&q,12); Tambah(&q,13); Tambah(&q,14); Tambah(&q,15); Tambah(&q,16); Tambah(&q,17); Tambah(&q,18); Tambah(&q,19); Tambah(&q,20); Tambah(&q,21); Tampil(&q); printf("\nhapus Item = %d ", data); printf("\nhapus Item = %d ", data); printf("\nhapus Item = %d ", data); Tampil(&q);

PRAKTIKUM 5 ANTRIAN (QUEUE) 64 Percobaan 3 : Implementasi antrian dengan linked list #include<stdio.h> #include<malloc.h> typedef struct node int Item; struct node *link; Node; typedef struct Node *Front; Node *Rear; Queue; // Prosedur untuk menyisipkan data pada antrian void Tambah(Queue *Q, int y) Node *ptr; ptr=(node *) malloc(sizeof(node)); ptr->item=y; ptr->link=null; if(q->front ==NULL) Q->Front = Q->Rear = ptr; Q->Rear->link=ptr; Q->Rear=ptr; // Prosedur untuk menghapus data dari antrian int Hapus(Queue *Q) int num; if(q->front==null) printf("\n\n\t\tantrian Kosong\n\n"); return(0); num=q->front->item; Q->Front = Q->Front->link; if(q->front == NULL) Q->Rear = NULL; //printf("\nnilai yang dihapus : %d \n",num); return(num);

PRAKTIKUM 5 ANTRIAN (QUEUE) 65 void Tampil(Node *N) printf ("\nfront -> "); while (N!= NULL) if(n->link == NULL) printf("%5d", N->Item); printf(" <- Rear"); printf("%5d", N->Item); N = N->link; int Count(Node *N) int c=0; while (N!= NULL) N = N->link; c++; return c; void main() int item; Queue Q; Q.Front = Q.Rear = NULL; Tambah(&Q, 11); Tambah(&Q, 12); Tambah(&Q, 13); Tambah(&Q, 14); Tambah(&Q, 15); Tambah(&Q, 16); Tambah(&Q, 17); Tampil(Q.Front); printf("\njumlah data pada antrian : %d", Count(Q.Front)); item=hapus(&q); printf("\nnilai yang dihapus : %d",item); item=hapus(&q); printf("\nnilai yang dihapus : %d",item); item=hapus(&q); printf("\nnilai yang dihapus : %d",item); Tampil(Q.Front); printf("\njumlah data pada antrian : %d", Count(Q.Front));

PRAKTIKUM 5 ANTRIAN (QUEUE) 66 LATIHAN: 1. Implementasikan studi kasus simulasi tempat parkir dengan ketentuan sebagai berikut : a. Gunakan struktur data dengan elemen data berupa Nomor mobil. b. Gunakan struktur data array dan linked list. c. Buatlah sebuah flowchart yang meliputi proses Mobil masuk. Mobil paling depan keluar. Mobil tengah keluar disertai proses penampungan mobil sementara, memasukkan mobil dari penampungan sementara dan menyusun tempat parkir kembali. 2. Berikan kesimpulan dari percobaan dan latihan yang telah Anda lakukan.