Algoritma dan Struktur Data STACK

dokumen-dokumen yang mirip
Algoritma dan Struktur Data. Queue

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

BAB II STACK (TUMPUKAN)

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

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Struktur Data Array. Rijal Fadilah S.Si

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

Algoritma Pemrograman & Struktur Data

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

Algoritma Dan Struktur Data II. Queue

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

ARNA FARIZA YULIANA SETIOWATI

S TA C K Sunu Wibirama

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

Materi 8 : STACK (TUMPUKAN) Dosen:

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

BAB II STACK Atau TUMPUKAN

Pertemuan 10. Tumpukan (Stack) Dipersiapkan oleh : Boldson Herdianto. S., S.Kom., MMSI.

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

Algoritma Dan Struktur Data II

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

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

Pertemuan 7. REVIEW dan QUIS

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

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

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

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

BAB 3 STACK (TUMPUKAN)

Stack. Gambar 1.1 Stack

STACK. Sistem penyimpanan data dengan mekanisme Last In First Out( LIFO).

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

4. STACK / TUMPUKAN TEORI PENUNJANG

Modul Praktikum Algoritma dan Struktur Data

Algoritma dan Struktur Data. Ramos Somya

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

Mata Kuliah : Struktur Data Semester : Genap Kode Mata Kuliah : 307 Waktu : 180 Menit Bobot : 4 sks. Jurusan : MI

MODUL IV STACK A. TUJUAN

LAPORAN PRAKTIKUM IX. Oleh:

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

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

LIST LINIER & STACK. Pertemuan 6 Yani sugiyani, M.Kom

Linked List dan Implementasinya dalam Bahasa Java

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

LAPORAN PRAKTIKUM RESMI QUEUE

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

STRUKTUR DATA Pertemuan 4

INFIX, PREFIX DAN POSTFIX

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

ALGORITMA DAN STRUKTUR DATA

Struktur Data dan Algoritma

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

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

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

ARNA FARIZA YULIANA SETIOWATI

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

Materi 9 : QUEUE (ANTREAN) Dosen:

STACK/TUMPUKAN. R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

KUM 5 IMPLEMENTASI QUEUE

BAB III STACK ATAU TUMPUKAN

Algoritma Dan Struktur Data II

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

BAB II LANDASAN TEORI

BAB IX LINKED LIST (SENARAI BERANTAI)

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

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

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

Gambar 1. Single Linked List

Gambar 1. Ilustrasi Stack

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

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Algoritma Pemrograman [BS204]

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

RENCANA PEMBELAJARAN

Review : Sifat Implementasi Linear List dengan Array

DIG1G3 Implementasi Struktur Data

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

Gambar 1. Single Linked List

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

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

BAB III METODE PENELITIAN / PERANCANGAN SISTEM. perancangan dan pembuatan program ini meliputi : dengan konversi notasi infix, prefix, dan postfix.

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

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

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

Pemrograman Berbasis Objek Operator dan Assignment

Algoritma Pemrograman

(3) BAHAN KAJIAN (materi ajar)

Operator dan Assignment

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

STRUKTUR DATA Pertemuan 1 s.d 8

BAB IV Antrian(Queue)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

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

Lab. Teknik Informatika Struktur Data 1

Transkripsi:

Algoritma dan Struktur Data STACK Teknik Informatika Universitas Muhammadiyah Malang 2016

Tujuan Instruksional Mahasiswa mampu : Memahami tentang konsep stack Mengetahui mekanisme pengoperasian sebuah stack Mengimplementasikan stack dengan array Mengimplementasikan stack dengan linked list

Topik Pengertian stack Operasi dasar pada stack Implementasi stack dengan array Implementasi stack dengan linked list

Pendahuluan Stack Queue Tumpukan, FIFO Antrian, LIFO Implementasi : Bisa menggunakan Array atau Linkedlist

Konsep Stack Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack

Konsep Stack Stack (tumpukan) adalah struktur data dimana proses pengambilan dan penambahan element dilakukan pada satu ujung yang sama. Stack mengikuti konsep LIFO. LIFO (Last In First Out) : elemen yang terakhir kali masuk akan menjadi elemen yang pertama kali keluar.

Konsep Stack Operasi dasar pada stack adalah : pop dan push. Push : proses menambah item pada stack. Pop : proses mengambil item pada stack. Pop dan push sama-sama dilakukan pada item yang terakhir kali ditambahkan pada stack. PUSH POP Stack

Konsep Stack TOP Pointer TOP : digunakan untuk menunjuk element paling akhir yang dimasukkan kedalam stack.

Konsep Stack Jika top tidak menunjuk pada element manapun hal ini menunjukkan bahwa stack dalam kondisi kosong (empty). Pada array : top akan menyimpan index element paling akhir masuk. Pada linked list : top akan menyimpan alamat node yang paling akhir ditambahkan.

Ilustrasi stack dengan array -1 Top = 0 Top = 1 Top = 1 Top = 2 Top = 0-1

Ilustrasi Stack dengan Linked List

Latihan Misal L adalah array. Gambarkan proses Stack untuk tiap operasi berikut dan tuliskan hasil akhirnya jika top menunjuk pada data f : L = {a,b,c,d,e,f} pop(); pop(); push(z); push(y); pop(); push(w);

Operasi pada Stack 1. Deklarasi 2. Inisialisasi 3. Cek kosong 4. Cek penuh 5. Penambahan 6. Pengambilan 7. Pengaksesan

(1) Deklarasi Proses yang harus dilakukan pertama kali adalah deklarasi/menyiapkan tempat. Langkah yang harus dilakukan adalah : Deklarasi class Deklarasi struktur data (menggunakan array atau linked list) Deklarasi pointer top

Deklarasi Stack dengan Array 1. Pembuatan class contoh : 2. Pembuatan variabel top : int top; 3. Pembuatan variabel untuk menampung panjang array : int array_size; (mendeklarasikan variabel bernama array_size dengan tipe integer) 4. Pembuatan variabel Array : int tumpukan[]; (mendeklarasikan variabel array bernama tumpukan dengan tipe integer)

Program Deklarasi (Array)

Deklarasi Stack dengan Linked-list 1. Pembuatan class stack contoh : 2. Pembuatan class Node 3. Pembuatan variabel head, tail dan top bertipe Node. Ketiga variabel ini dideklarasikan pada class Stack Node head,tail,top;

Contoh Class Node

Program Deklarasi (StackLinkedList.java)

(2) Inisialisasi Merupakan proses pemberian nilai awal. Pada Array : 1. Pembentukan obyek array beserta ukurannya. tumpukan = new int[10]; (pembentukan obyek array yang memiliki 10 element, dan alamat obyek akan disimpan pada variabel bernama tumpukan) 2. Pemberian nilai awal pada variabel top=-1. int top=-1;

Program Inisialisasi (Array)

(2) Inisialisasi...(lanjutan) Pada Linked List: Proses inisialisasi dilakukan dengan memberikan nilai awal pada variabel head, tail dan top dengan nilai null. head = tail = top = null;

Program Inisialisasi (Linked List)

(3) Cek Kosong Operasi yang digunakan untuk mengecek kondisi stack dalam keadaan kosong. Caranya : melihat nilai top. Jika nilainya sama seperti ketika inisialisasi berarti stack dalam kondisi kosong (top =-1 atau top=null). Operasi ini harus dapat mengembalikan nilai true jika stack kosong dan false jika sebaliknya.

Program isempty (Array)

Program isempty (Linked List)

(4) Cek Penuh Operasi yang hanya dapat diterapkan pada stack yang menggunakan array. Operasi ini digunakan untuk mengecek kondisi stack dalam keadaan penuh. Caranya : melihat nilai top. Jika nilai top sudah menunjuk n-1 (dimana n adalah ukuran array) maka dapat diindikasikan stack sudah dalam kondisi penuh. Operasi ini harus dapat mengembalikan nilai true jika stack penuh dan false jika sebaliknya.

Program isfull (Array)

(5) Operasi POP Pop adalah proses pengambilan data pada stack. Ketika pop terjadi, element pada stack akan berkurang, yaitu element yang paling akhir ditambahkan. Sehingga posisi pointer top juga akan bergeser : Pada array : top di-decrement Pada linked list : top menunjuk ke node sebelum node yang dihapus.

(5) Operasi POP...(lanjutan) Langkah-langkah : 1. Pengecekan stack dalam kondisi kosong dengan memanggil method isempty(). Jika nilai yang dikembalikan true maka pop tidak bisa dilakukan (penangkapan error oleh exception handling). Jika nilai yang dikembalikan false maka akan dilakukan langkah berikutnya (langkah 2 dan 3). 2. Data dari element paling belakang akan menjadi return value (nilai yang dikembalikan). 3. Pergeseran posisi top.

Program Pop (Array) Untuk menggunakan StackException() harus disertakan import package dari java.util.*

Program Pop (Linked List)

Program removelast

(6) Operasi Push Push adalah proses penambahan element pada stack. Ketika push terjadi, element pada stack akan bertambah 1. Posisi pointer top akan bergeser menunjuk pada element baru yang ditambahkan. Pada array : top akan di-increment. Pada linked list : top akan menunjuk ke node baru yang ditambahkan

(6) Operasi PUSH...(lanjutan) Langkah-langkah : 1. Penambahan element baru pada bagian belakang stack. 2. Pergeseran posisi top. Khusus untuk array, terlebih dahulu harus dicek kondisi stack penuh dengan memanggil method isfull(). Jika nilai yang dikembalikan true maka bisa ditampilkan pesan kesalahan atau dilakukan resizing array.

Program Push (Array)

Program Rezising()

Program Push (Linked List)

Program addlast

(7) Operasi peek Peek adalah proses pengaksesan element yang ditunjuk oleh top(yaitu element yang terakhir kali ditambahkan). Operasi ini berbeda dengan pop karena tidak disertai dengan penghapusan data yang ada hanya pengaksesan (pengembalian data saja).

Program Peek (Array)

Program Peek (Linked List)

Penting! Untuk linked list, jika operasi push dilakukan dari depan (addfirst) maka operasi pop juga dilakukan dari belakang (removefirst). Sebaliknya, jika operasi push dari belakang (addlast) maka operasi pop juga dilakukan dari belakang (removelast).

Contoh Penerapan Stack Konversi Desimal ke Biner Notasi Polish Menara Hanoi Rat In a Maze

Latihan : implementasi stack Konversi Bilangan Desimal ke Biner 1. Ambil sisa pembagian variable bilangan dengan angka 2, kemudian simpan dalam variable sisa. Kemudian simpan isi variable sisa ke dalam stack. 2. Bagi variable bilangan dengan angka 2. 3. Ulangi langkah 1 dan 2 selama bilangan tidak 0. Jika variable bilangan telah bernilai 0 maka lanjutkan ke langkah 4, 4. Lakukan perulangan untuk langkah 5 dan 6 selama stack masih mempunyai isi (tidak kosong). 5. ambil (pop) nilai yang ada di stack simpan di variable data. 6. Tulis isi variable data ke layar. 7. Selesai.

Implementasi Stack (Notasi Polish)

Notasi Polish (1) Menggubah notasi infix menjadi notasi postfix. Contoh : A+B (infix) AB+ (postfix)

Algoritma Misal : Q = ekspresi matematika yang ditulis dalam notasi infix P = penampung ekspresi matematika dalam notasi postfix

Algoritma 1. Push tanda ( ke stack dan tambahkan tanda ) di sentinel di Q. 2. Scan Q dari kiri ke kanan, kemudian ulangi langkah c s.d f untuk setiap elemen Q sampai stack Q kosong. 3. Jika yang discan adalah operand, maka tambahkan ke P 4. Jika yang discan adalah ( maka push ke stack 5. Jika yang discan adalah ) maka pop isi stack sampai ditemukan tanda (, kemudian tambahkan ke P sedangkan tanda ( tidak disertakanke P. 6. Jika yang discan adalah operator, maka : - Jika elemen paling atas dari stack adalah operator yang mempunyai tingkatan sama atau lebih tinggi dari operator yang discan, maka pop operator tsb dan tambahkan ke P. - Push operator tersebut ke stack. 7. Keluar

Contoh Q = A + ( B * C - ( D / E ^ F ) * G ) * H

Penyelesaian Q = A + ( B * C - ( D / E ^ F ) * G ) * H >> setelah ditambahkan tanda ) pada notasi sehingga terdapat 20 simbol sbb :

Penyelesaian

Penyelesaian Hasil akhir : Dari proses di atas didapatkan notasi postfix Q = ABC*DEF^/G*-H*+

Notasi Polish (2) Menghitung ekspresi matematika yang disusun dalam notasi postfix. Contoh : 2,5,* (postfix) Hasil : 10

Algoritma Misal : P adalah ekspresi matematika yang ditulis dalam notasi postfix. variable value sebagai penampung hasil akhir.

Algoritma 1. Tambahkan tanda ) pada sentinel di P 2. Scan P dari kiri ke kanan, ulangi langkah c dan d untuk setiap elemen P sampai ditemukan sentinel. 3. Jika yang discan adalah operand, maka push ke stack. 4. Jika yang discan adalah operator (sebut opr1), maka Pop 1 buah elemen teratas dari stack, simpan dalam variable var1. Pop 1 buah elemen teratas dari stack, simpan dalam variable var2. Hitung variable (var2 opr1 var1), simpan hasil di variable hitung. Push variable hitung ke stack. 5. Pop isi stack dan simpan di variable value. 6. Keluar.

Contoh Kasus P = 5, 2, 6, +, *, 12, 4, /, -

Penyelesaian P = 5, 2, 6, +, *, 12, 4, /, - Tambahkan tanda ) pada sentinel P sehingga P = 5, 2, 6, +, *, 12, 4, /, -, ) Didapatkan 10 simbol yaitu :

Penyelesaian Hasil : Didapatkan Bilangan 37

Operator Priority ^ /, * +, - Pangkat, akar Pembagian, perkalian Penambahan, pengurangan

Latihan 1. Ubah notasi infix berikut ke dalam bentuk notasi postfix : A+((B*C/D)-(E^F)) M*(N^O)/P-(Q+R) (R*S+T)^U/(V-W+X)

Latihan 2. Hitung ekspresi matematika berikut yang disusun dalam bentuk postfix : 2,2,3,+,*,3,2,-,* B,2,^, 4,, a, *, c, *, 2, a, *, /, p, q, *, a, b, +, /, +

Pustaka Sartaj Sahni, Presentation L5 & L10 Jokonowo, Bambang S.Si, Pemrograman Berorientasi Obyek, Pusat pengembangan bahan ajar UMB, 2006. Noviyanto, Pemrograman Berorientasi Obyek (PBO) Array, 2005 Nugroho, Adi, Algoritma dan Struktur Data Dalam Bahasa Java, ANDI Yogyakarta, 2008. Michaell Waite, Data Structures and Algorithms in Java, SAMS, 2001