Algoritma dan Struktur Data - antrian

12
Antrian Algoritma dan Struktur Data Kuliahkita - Edwin Lunando

Transcript of Algoritma dan Struktur Data - antrian

Page 1: Algoritma dan Struktur Data - antrian

AntrianAlgoritma danStruktur Data

Kuliahkita - Edwin Lunando

Page 2: Algoritma dan Struktur Data - antrian

Pendahuluan

Antrian adalah sebuah struktur penyimpanan data yang menyimpan data sesuai urutan dan proses pengambilan seperti antrian.

Antrian memiliki prinsip First in First Out (FIFO). Karena seperti layaknya antrian, data yang dimasukkan pertama akan diambil terlebih dahulu.

Page 3: Algoritma dan Struktur Data - antrian

Metode pada Antrian

Terdapat beberapa method dasar pada queue:1. Enqueue : menambahkan data ke queue di paling

belakang2. Dequeue : mengambil dari antrian paling depan,

elemen akan hilang3. Peek : memeriksa data antrian pertama4. IsEmpty : memeriksa apakah antrian kosong

Page 4: Algoritma dan Struktur Data - antrian

Struktur Antrian

Antrian juga mirip dengan tumpukan yang serupa dengan list, hanya saja pop pada queue akan mengembalikan elemen yang masuk setelah elemen terdepan yang di-pop

Peek EnqueueDequeue

Page 5: Algoritma dan Struktur Data - antrian

Antrian Senarai

Karena memang memiliki dasar yang sama dengan list, Antrian dapat digambarkan sebagai list linier dengan:1. Kepala : elemen pertama2. Ekor : elemen terakhir3. Aturan penyisipan pada elemen terakhir, dan

penghapusan / pengambilan pada elemen pertama

Head Tail

Page 6: Algoritma dan Struktur Data - antrian

Contoh Antrian Terbatas(Larik)

Head, Front IdxMax

Posisi Head = Tail (queue kosong)

x x x x x x

Page 7: Algoritma dan Struktur Data - antrian

Contoh ADT Array Queue Integertype Queue: < integer capacity /* kapasitas queue*/ integer tail /* indeks queue */ integer infoTail /* nilai teratas pada queue */ integer Q[capacity] /* Q menampung elemen queue */ >

/* mengembalikan nilai terdepan dari queue */function peek(Input Q: Queue) → integer/* mengembalikan nilai pada queue*/function infoTail(Input Q: Queue) → integer/* memeriksa apakah queue kosong */function isEmpty(Input Q: Queue) → boolean/* menginisialisasi queue */Procedure buatQueue(Output Q: Queue)/* menambah nilai pada queue */Procedure enqueue(Input/Output Q: Queue, X: in integer)/* mengambil nilai dari queue */Procedure dequeue(Input/Output S: Stack, Output X: integer)

Page 8: Algoritma dan Struktur Data - antrian

Seperti tumpukan, antrian juga memiliki kapasitas yang menyaktan jumlah elemen yang bisa diisi pada penampung berbentuk larik, karena larik ini juga akan didefinisikan dengan besar = kapasitas.

Tail merupakan indeks kosong terakhir antrian sehingga kita tidak perlu lagi mencari indeks terakhir pada larik penampung yang telah terisi jika ingin melakukan operasi. Sedangkan infoTail yang diset juga untuk dapat langsung mengembalikan nilai terdepan.

Penjelasan TDA Antrian

Page 9: Algoritma dan Struktur Data - antrian

Contoh Kode C++ Array Queue Integer#include <iostream>using namespace std; typedef struct queue { int capacity; /* kapasitas antrian */ int tail; /* informasi indeks dari elemen kosong terakhir pada antrian */ int infoTail; /* informasi dari elemen informasi dari elemen terakhir pada antrian */ int Q[10]; /* tempat penyimpanan antrian dalam larik */} Queue;

void buatQueue(Queue &Q) { Q.capacity = 10; // inisialisasi kapasitas queue Q.tail = 0; for (int i=0; i<10 ; i++) { Q.Q[i] = -9999; } // misalkan nilai -9999 adalah penanda kosong}

Page 10: Algoritma dan Struktur Data - antrian

Contoh Kode C++ Array Queue Integerbool isEmpty(Queue Q) { return Q.tail == 0;}

int Dequeue(Queue &Q) { int num = Q.Q[Q.tail-1]; Q.tail -= 1; int iterator = 0; bool done = false; while (!done) { // rapatkan antrian setelah pengambilan Q.Q[iterator] = Q.Q[iterator+1]; iterator++; if(Q.Q[iterator] == -9999) { done = true; } } return num;}

Page 11: Algoritma dan Struktur Data - antrian

Contoh Kode C++ Array Queue Integervoid Enqueue(Queue &Q, int x) { if (Q.tail != 10) { // jika queue belum penuh Q.Q[Q.tail] = x; // isi nilai head yang kosong dengan x Q.head += 1; // naikan nilai head }}

int main() { Queue myQueue; buatQueue(myQueue); Enqueue(myQueue, 10); Enqueue(myQueue, 20); for (int i=0; i<10; i++) cout << myQueue.Q[i] <<" | "; int hasil = Dequeue(myQueue); cout << endl << "hasil: " << hasil << endl; for (int i=0; i<10; i++) cout << myQueue.Q[i] <<" | "; return 0;}

Page 12: Algoritma dan Struktur Data - antrian

Pemanfaatan Queue

Aplikasi queue / antrian dapat digunakan contohnya pada1. Program pemesanan (resrevasi hotel, tempat makan,

travel, dll)2. Program penjadwalan (waktu eksekusi sub-program)3. Program penyaringan / filter, misalkan pada jaringan

komputer untuk pembagian bandwidth4. dll