Antrian (Queue) Desain dan Analisis Algoritma

Slides:



Advertisements
Presentasi serupa
Queue (Antrian).
Advertisements

Pertemuan 5 Struktur Data
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA array stack dan queue
QUEUE II. IMPLEMENTASI QUEUE
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
STRUKTUR DATA PERTEMUAN 6
QUEUE.
Queue.
Quiz struktur data Genap 2013.
Pertemuan (6) QUEUE (ANTREAN) IMAM SIBRO MALISI NIM :
Algoritma dan Struktur Data
STACK (Tumpukan).
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STACK.
STACK.
Struktur Data (Data Structure) – IS 2313
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
Queue.
Queue.
STRUKTUR DATA (6) single linked list non circular
Queue.
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.
Stack.
STRUKTUR DATA (2) Single Linked List
Program Studi Teknik Informatika
Single Linked List.
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA QUIZ.
Program Studi Teknik Informatika
Defri Kurniawan QUEUE Defri Kurniawan
STRUKTUR DATA – Pertemuan 6
Struktur Organisasi Data 2
Queue.
STRUKTUR DATA QUEUE (Antrian)
STACK (Tumpukan).
QUEUE (ANTRIAN ) Disusun Oleh : Kelompok 2 Siti Hajar ( )
Program Studi Teknik Informatika
Program Studi Teknik Informatika
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
Algoritma dan Struktur Data
Struktur Data Khoiriya Latifa, M.Kom.
Program Studi Teknik Informatika
NAMA : SITI HAJAR NIM : UNIT : B NO.HP : 0852 – 2000 – 3786.
Nama : Siti Hajar Nim : Unit : B/III No.Hp : 0852 –
Program Studi Teknik Informatika
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Algoritme dan Stuktur Data
Queue(Antrian).
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
STRUKTUR DATA PERTEMUAN 7
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
Algoritma dan Struktur Data
STRUKTUR DATA Teknik Informatika S1
Queue Algoritma dan Struktur Data.
QUEUE (Antrian).
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
Defri Kurniawan QUEUE DENGAN LIST Defri Kurniawan
SINGLE LINKED LIST (SLL)
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

Antrian (Queue) Desain dan Analisis Algoritma I Ketut Resika Arthana, S.T., M.Kom resika.arthana@gmail.com | http://www.rey1024.com Jurusan Pendidikan Teknik Informatika FTK - UNDIKSHA

Warming Up Buat program untuk menampilkan bilangan 0 sampai 10. Jika bilangan tersebut adalah kelipatan 3, maka disamping bilangan tersebut ditulis * Output 0* 1 2 3* 4 5 6* 7 8 9* 10

Warming Up Buat program untuk menghitung akar-akar persamaan kuadrat dari Ax2+Bx+C=0 A, B dan C diinputkan oleh user Hitung nilai D = B2 -4*A*C Jika D<0 maka tampilkan “Akar AX2 + BX +C=0 adalah imajiner” Jika D=0 maka hitung : AKar1= -B / (2*A ) Akar2=Akar 1 Tampilkan tulisan nilai akar1 dan akar2 Jika D>0 AKar1= -B + Akar(D)/ (2*A ) Akar2= -B - Akar(D)/ (2*A )

Type data struct typedef struct { char data[MAX]; int head; //posisi kepala int tail; //posisi ekor } Queue; Queue antrian;

Materi Array SCELE FASILKOM-UI

Pengenalan Struktur data antrian dalam kehidupan nyata : Antrian dikasir supermarket Antrian di SPBU Antrian Tiket Kereta Api Karakteristik : Penambahan data : dibelakang (tail) Penghapusan data : didepan (head) Prinsip : FIFO ( First In First Out )

Implementasi Antrian Array (Larik) Linked List (Senarai Berantai) Implementasi dengan linked list akan memberikan ketersediaan ruang yang dinamis, yaitu sesuai dengan kebutuhan penggunaan ruang yang tidak dapat ditentukan dengan pasti

Implementasi dengan Larik Depan Antrian Keluar Antrian Masuk Antrian A B C D E Belakang Antrian

Cara 1 Kondisi awal (antrian kosong) dinyatakan dengan posisi depan=0, belakang=-1; Banyaknya elemen : Belakang -Depan + 1 Jika terjadi penghapusan antrian maka posisi depan ditambah dengan 1 Jika terjadi penambahan elemen baru ke dalam antrian maka posisi belakang ditambah dengan 1, lalu dimasukkan elemen baru Belakang = Belakang + 1; Antrian[Belakang] = X;

Cara 1 Head 1 2 3 4 A B C D E Tail

Prosedur yang harus dipersiapkan Init : Inisiasi posisi head dan tail isEmpty : mengecek apakah antrian kosong isFull : mengecek apakah antrian penuh Enqueue : Menambah elemen dalam antrian Dequeue : Menghapus elemen awal CountElement : MenghitungJumlahElemen

Cara1 : Deklarasi * Deklarasikan array dngn nama data, panjangnya : MAX * Deklarasikan variable head dan tail bertipe integer Tampilkan tulisan “Program Antrian di inisialisasi Inisisialisasi head antrian dengan 0 Inisialisasi tail antrian dengan -1

Cara1: funct isEmpty isFull Jika tail antrian lebih kecil dari head antrian maka kembalikan nilai 1 untuk menandakan bahwa antrian kosong. Sebaliknya kembalikan nilai 0 untuk menandakan bahwa antrian tidak kosong Antrian disebut penuh jika posisi tail saat ini sama dengan nilai (max-1) Kembalikan nilai 1 jika penuh, sebaliknya kembalikan nilai 0 jika antrian tidak penuh

Cara1 : enqueue dequeue Jika Antrian tidak penuh maka geser posisi tail kekanan; Isi data pada antrian sesuai posisi saat ini dengan karakter D Jika ternyata antrian penuh, tampilkan tulisan bahwa antrian penuh Jika Antrian tidak kosong maka simpan karakter yang ada pada posisi kepala ke variabel bertipe char dengan nama c Geser posisi head antrian kekanan Tampilkan tulisan bahwa data tersebut keluar dari antrian Jika ternyata antrian kosong, tampilkan pesan bahwa antrian kosong

Cara1 : countElement Print Hitung jumlah elemen dengan dengan cara mencari selisih posisi tail dengan posisi head ditambah dengan 1 Tampikan jumlah antrian saat ini Tampilkan posisi head dan tail antrian saat ini Tampilkan isi antrian secara horishontal

Cara1 : Main, TestCase Bangun test case dengan memasukkan karakter A,B,C,D, kemudian keluarkan data dari dalam antrian sebanyak 5 kali. Masukkan karakter E dan F Disetiap testcase, tampilkan isi antrian, jumlah elemen dan posisi head dan tail antrian

Cara1: Output

Permasalahan Cara 1? False Alarm : Dalam antrian masih ada tempat yang kosong, tetapi tidak diijinkan untuk mengantri baru

Cara 2 Head 1 2 3 4 A B C D Tail

Modif Coding Dequeue Modifikasi function dequeue sehingga terjadi pergeseran ketika terjadi penghapusan dari antrian

Permasalahan Cara 2 Dalam jumlah data besar, terjadi banyak geseran sehingga menyebabkan biaya komputasi yang besar

Solusi dari masalah kedua menyimpan elemen antrian sebagai larik yang memutar (circular), bukan lurus (straight), membuat elemen pertama larik terletak berdekatan langsung dengan elemen terakhir larik

Solusi Array Cilcular

Array Circullar E D C Kondisi awal : head =0, tail =-1 Penambahan Elemen Baru (E) : (jika antrian blm penuh) 4 E antrian.tail = antrian.tail +1 antrian.data[antrian.tail] = ‘E’ Bagaimana jika menambah lagi? tail sudah di posisi max D 3 1 Tail antrian.tail = (antrian.tail + 1) % 5 C 2 Penghapusan : Jika antrian tidak kosong Head

Deklarasi * Deklarasikan array dngn nama data, panjangnya : MAX * Deklarasikan variable head , tail dan count bertipe integer

Inisialisasi dan hitung elemen Inisialisasi head antrian menjadi 0, tail menjadi -1 status menjadi 0

Antrian dan penghapusan Data diantrikan jika antrian kosong atau jumlah elemen di antrian tidak sama dengan maksimal array. Jika tidak maka tampilkan info bahwa antrian penuh Tail antrian di geser sekali kekanan, memutar kembali jika sudah diujung Masukkan data sesuai dengan posisi tail saat ini. Tampikan informasi bahwa antrian telah dimasukkan

Data pada antrian dihapus jika antrian sudah terisi, jika tidak tampilkan tulisan bahwa antrian kosong Tampung nilai yang akan dihapus ke variabel karakter Pindahkan head kekanan, memutar kembali jika sudah penuh Tampilkan info bahwa data c keluar dari antrian Tampilkan jumlah antrian saat ini

Posisi dan isi antrian Tampilkan posisi head dan tail saat ini Tampilkan antrian, antrian hanya ditampilkan jika ada elemen didalam antrian

Program utama : testcase Test case dengan mengantrikan karakter A sampai F Keluarkan sebanyak 4 kali Antrikan karakter G dan H ANALISA

Tugas Modifikasi program tersebut agar bisa interaktif menggunakan menu Pilihan : Antrikan Data Hapus dari Antrian Keluar

Sekian