POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

dokumen-dokumen yang mirip
QUEUE Antrian 1. DEFINISI

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

Algoritma Pemrograman & Struktur Data

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma Dan Struktur Data II. Queue

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

BAB II STACK Atau TUMPUKAN

Algoritma Dan Struktur Data II

Struktur Data Array. Rijal Fadilah S.Si

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

Pertemuan 7. REVIEW dan QUIS

Algoritma dan Struktur Data STACK

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

*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

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

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Materi 8 : STACK (TUMPUKAN) Dosen:

Pendahuluan Struktur Data. Nisa ul Hafidhoh

LAPORAN PRAKTIKUM RESMI QUEUE

Struktur Data. Queue (Antrian)

A. TUJUAN 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur.

Modul Praktikum Algoritma dan Struktur Data

MODUL IV STACK A. TUJUAN

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

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

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

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

Algoritma dan Struktur Data. Pertemuan 5 Pointer

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

(3) BAHAN KAJIAN (materi ajar)

Algoritma dan Struktur Data. Ramos Somya

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

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

BAB II STACK (TUMPUKAN)

DIG1G3 Implementasi Struktur Data

S TA C K Sunu Wibirama

STACK Tumpukan TOP TOP BOTTOM BOTTOM

Algoritma Dan Struktur Data II

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

MODUL PEMROGRAMAN 2. Queue (Antrian)

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

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

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

STRUKTUR DATA Pertemuan 1 s.d 8

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

Algoritma dan Struktur Data. Queue

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

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

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

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

S T A C K ( T U M P U K A N )

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Lab. Teknik Informatika Struktur Data 1

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

1. Kompetensi Mengenal dan memahami struktur data Stack (tumpukan) dan Queue (antrian).

SATUAN ACARA PERKULIAHAN MATA KULIAH : STRUKTUR DATA KODE / SKS : IK410 / 2 SKS

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

BAB IV Antrian(Queue)

PENGANTAR KOMPUTER & SOFTWARE II

PENGANTAR KOMPUTER & SOFTWARE II

KUM 5 IMPLEMENTASI QUEUE

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

BAB 3 STACK (TUMPUKAN)

BAB III QUEUE (ANTRIAN)

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

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

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

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

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

POINTER II. Oleh : Mike Yuliana PENS-ITS

4. STACK / TUMPUKAN TEORI PENUNJANG

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

TIF 4201 Algoritma Dan Struktur Data

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

BAB IX LINKED LIST (SENARAI BERANTAI)

Pertemuan 04. Pemrograman Dasar 2012

Algoritma dan Struktur Data. Pointer Pada Struct

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

/* File program : tukar1.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Linked List 6.3 & 7.3 NESTED LOOP

A. TUJUAN PEMBELAJARAN

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

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

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

ALGORITMA DAN STRUKTUR DATA

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

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

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

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.

Konsep Pemrograman. Bab 12. Pointer 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

Transkripsi:

POINTER STACK DAN QUEUE ALGORITMA DAN STRUKTUR DATA Institut Teknologi Sumatera

PRE TEST Apakah yang disebut dengan array? Bagaimana cara deklarasi dan pengacuan dari sebuah array? Apa kekurangan array?

POINTER Merupakan variabel yang menyimpan alamat (referensi) dari nilai lain Berbeda dengan variabel biasa yang menyimpan nilai miliknya sendiri x 13 13 int x; x px int *px; px = &x; /* operator reference to */

CONTOH #include <stdio.h> int main(){ int x; int *px; x = 12; printf("alamat x : %d", &x); printf("\n"); printf("nilai x : %d", x); printf("\n"); px = &x; } printf("\n"); printf("variabel px berisi alamat x, yaitu : %d", px); printf("\n"); printf("nilai yg diacu variabel px adalah : %d", *px);

SUB PROGRAM Blok program yang merupakan sekumpulan instruksi yang bertujuan untuk menyelesaikan suatu tugas khusus. Sebuah sub progam dibuat untuk membantu mengerjakan tugas yang kompleks secara efektif dan efisien.

PASSING PARAMETER Passing by value Passing by reference

PASSING PARAMETER BY REFERENCE Mengatur masukan dari sebuah sub program, agar nilai dari variabel asli bisa dimodifikasi. Parameter input sub program adalah alamat memori dari variabel sebenarnya.

PASSING BY VALUE VS. PASSING BY REFERENCE #include <stdio.h> void ubah(int sesuatu){ sesuatu = sesuatu + 100; } int main(){ int x; x = 50; printf("nilai x sebelum diubah : %d", x); ubah(x); VS #include <stdio.h> void ubah(int *sesuatu){ *sesuatu = *sesuatu + 100; } int main(){ int x; x = 50; printf("nilai x sebelum diubah : %d", x); ubah(&x); } printf("\n"); printf("nilai x setelah diubah : %d", x); } printf("\n"); printf("nilai x setelah diubah : %d", x);

PROSEDUR TUKAR #include <stdio.h> int main(){ int bil_1, bil_2; printf("input bilangan 1 : "); scanf("%d",&bil_1); printf("input bilangan 2 : "); scanf("%d",&bil_2); printf("\n\n"); printf("nilai sebelum ditukar\n"); printf("bilangan 1: %d", bil_1); printf("\n"); printf("bilangan 2: %d", bil_2); tukar(&bil_1, &bil_2); void tukar(int *x, int *y){ int tmp; tmp = *x; *x = *y; *y = tmp; } } printf("\n\n"); printf("nilai setelah ditukar\n"); printf("bilangan 1: %d", bil_1); printf("\n"); printf("bilangan 2: %d", bil_2);

STACK Stack: list linier yang: dikenali elemen puncaknya (TOP) aturan penyisipan dan penghapusan elemennya tertentu: Penyisipan selalu dilakukan "di atas" TOP Penghapusan selalu dilakukan pada TOP TOP adalah satu-satunya alamat tempat terjadi operasi Elemen Stack tersusun secara LIFO (Last In First Out)

STACK TOP TOP BOTTOM BOTTOM Representasi tabel sangat tepat untuk mewakili Stack Pada Stack : operasi penambahan dan pengurangan hanya dilakukan di salah satu ujung tabel Pada Tabel: operasi boleh di manapun.

PEMAKAIAN STACK Pemanggilan prosedur Perhitungan ekspresi aritmatika Rekursifitas Backtracking dan algoritma lanjut yang lain

DEFINISI FUNGSIONAL Jika diberikan S adalah Stack dengan elemen ElmtS: CreateEmpty : S { Membuat sebuah stack kosong} IsEmpty : S boolean { Test stack kosong, true jika stack kosong, false jika S tidak kosong } IsFull : S boolean { Test stack penuh, true jika stack penuh, false jika S tidak } Push : ElmtS x S S { Menambahkan sebuah elemen ElmtS sebagai TOP, TOP berubah nilainya } Pop : S S x ElmtS { Mengambil nilai elemen TOP, sehingga TOP yang baru adalah elemen yang datang sebelum elemen TOP, mungkin S menjadi kosong } 14

DEFINISI FUNGSIONAL Definisi Selektor: Jika S adalah sebuah Stack, maka Top(S) adalah alamat elemen TOP, di mana operasi penyisipan/penghapusan dilakukan InfoTop(S) adalah informasi yang disimpan pada Top(S) Definisi Stack kosong adalah Stack dengan Top(S)=Nil (tidak terdefinisi)

IMPLEMENTASI STACK DENGAN TABEL Ilustrasi Stack tidak kosong, dengan 5 elemen: Ilustrasi Stack kosong

QUEUE QUEUE adalah list linier yang: dikenali elemen pertama (HEAD) dan elemen terakhirnya (TAIL) aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut: Penyisipan selalu dilakukan setelah elemen terakhir Penghapusan selalu dilakukan pada elemen pertama satu elemen dengan yang lain dapat diakses melalui informasi NEXT

QUEUE Elemen Queue tersusun secara FIFO (First In First Out) Pemakaian queue: antrian job yang harus ditangani oleh sistem operasi (job scheduling) antrian dalam dunia nyata

QUEUE Secara lojik: Head Tail Elemen Queue kosong HEAD QUEUE dengan 3 elemen TAIL HEAD TAIL HEAD TAIL QUEUE kosong QUEUE dengan 1 elemen

DEFINISI FUNGSIONAL Jika diberikan Q adalah QUEUE dengan elemen ElmtQ IsEmpty : Q boolean { Tes terhadap Q: true jika Q kosong, false jika Q tidak kosong } IsFull : Q boolean { Tes 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 Q 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.

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF I Jika Queue tidak kosong: TAIL adalah indeks elemen terakhir, HEAD selalu diset = 1 Jika Queue kosong, maka HEAD = 0 dan TAIL = 0 Ilustrasi Queue tidak kosong dengan 5 elemen Ilustrasi Queue kosong:

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF I Algoritma penambahan elemen: Jika masih ada tempat, majukan TAIL Kasus khusus untuk Queue kosong: karena HEAD dan TAIL harus diset nilainya menjadi 1 Algoritma paling sederhana dan naif untuk penghapusan elemen Jika Queue tidak kosong: ambil nilai elemen HEAD, geser semua elemen mulai dari HEAD+1 s.d. TAIL (jika ada), kemudian TAIL mundur Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI Algoritma ini mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi tidak efisien

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF II Tabel dengan representasi HEAD dan TAIL, HEAD bergerak ketika sebuah elemen dihapus Jika Queue kosong, maka HEAD = 0 dan TAIL = 0 Ilustrasi Queue kosong:

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF II Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan pertama HEAD sedang berada di posisi awal: Ilustrasi Queue tidak kosong, dengan 5 elemen, kemungkinan lain HEAD tidak berada di posisi awal (akibat algoritma penghapusan)

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF II Algoritma penambahan elemen sama dengan alternatif I, kecuali pada saat penuh semu (lihat slide berikutnya) Algoritma penghapusan elemen: Jika Queue tidak kosong: ambil nilai elemen HEAD, kemudian HEAD maju Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI. Algoritma ini TIDAK mencerminkan pergeseran orang yang sedang mengantri di dunia nyata, tapi efisien

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF II Keadaan Queue penuh tetapi semu sebagai berikut: Harus dilakukan aksi menggeser elemen untuk menciptakan ruangan kosong Pergeseran hanya dilakukan jika dan hanya jika TAIL sudah mencapai IdxMax

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Tabel dengan representasi HEAD dan TAIL yang berputar mengelilingi indeks tabel dari awal sampai akhir, kemudian kembali ke awal Jika Queue kosong, maka HEAD=0 dan TAIL=0 Representasi ini memungkinkan tidak perlu lagi ada pergeseran yang harus dilakukan seperti pada alternatif II pada saat penambahan elemen

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD sedang berada di posisi awal

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Ilustrasi Queue tidak kosong, dengan 5 elemen, dengan HEAD tidak berada di posisi awal, tetapi masih lebih kecil atau sebelum TAIL (akibat penghapusan/ penambahan)

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Ilustrasi Queue tidak kosong, dengan 5 elemen, HEAD tidak berada di posisi awal, tetapi lebih besar atau sesudah TAIL (akibat penghapusan/penambahan)

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Algoritma penambahan elemen: Jika masih ada tempat, majukan TAIL Jika TAIL sudah mencapai IdxMax, maka suksesor dari IdxMax adalah 1 sehingga TAIL yang baru adalah 1 Jika TAIL belum mencapai IdxMax, maka algoritma penambahan elemen sama dengan alternatif II Kasus khusus untuk Queue kosong karena nilai HEAD dan TAIL harus diset menjadi 1

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Algoritma penghapusan elemen Jika Queue tidak kosong: ambil nilai elemen HEAD, kemudian HEAD maju. Penentuan suatu suksesor dari indeks yang diubah/ maju dibuat seperti pada algoritma penambahan elemen: jika HEAD mencapai IdxMAx, maka suksesor dari HEAD adalah 1 Kasus khusus untuk Queue dengan keadaan awal berelemen 1, yaitu menyesuaikan HEAD dan TAIL dengan DEFINISI.

IMPLEMENTASI QUEUE DENGAN TABEL ALTERNATIF III Algoritma ini efisien karena tidak perlu pergeseran, dan seringkali strategi pemakaian tabel semacam ini disebut sebagai circular buffer, di mana tabel penyimpan elemen dianggap sebagai buffer Salah satu variasi dari representasi pada alternatif III: menggantikan representasi TAIL dengan COUNT (banyaknya elemen Queue)