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

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

BAB II STACK (TUMPUKAN)

Algoritma dan Struktur Data STACK

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

BAB IX LINKED LIST (SENARAI BERANTAI)

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

STRUKTUR DATA Pertemuan 4

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

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB II STACK Atau TUMPUKAN

ALGORITMA DAN STRUKTUR DATA

BAB 3 STACK (TUMPUKAN)

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

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

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

BAB III STACK ATAU TUMPUKAN

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

ARNA FARIZA YULIANA SETIOWATI

S TA C K Sunu Wibirama

4. STACK / TUMPUKAN TEORI PENUNJANG

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

BAB IV IMPLEMENTASI DAN EVALUASI

BAB II LANDASAN TEORI

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

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Algoritma Pemrograman

BAB 2 LANDASAN TEORI

Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan

Stack. Gambar 1.1 Stack

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

Struktur Data Array. Rijal Fadilah S.Si

INFIX, PREFIX DAN POSTFIX

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

Pertemuan 7. REVIEW dan QUIS

Algoritma Pemrograman

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

Pada kondisi ini proses penghapusan tidak bisa dilakukan Kondisi linked list memiliki hanya 1 data{satu simpul} Akhir. Akhir

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Algoritma Pemrograman

Pertemuan Ke-4 Urutan (sequence) Rahmady Liyantanto. liyantanto.wordpress.com. S1 Teknik Informatika-Unijoyo

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

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

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

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

RENCANA PEMBELAJARAN

LOGO STRUKTUR DATA QUEUE

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

KONSEP POINTER DAN LINKED LIST

Algoritma Dan Struktur Data II

LIST. Dewi Sartika, M.Kom

Gambar 2.1 Ilustrasi Stack

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

ALGORITMA & PEMROGRAMAN

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

1. E = a + 2b d + dh f g. Ubah ke dalam notasi postfix: a. Menggunakan Algoritma b. Secara manual c. Dari pohon biner menggunakan Stack

QUEUE (ANTRIAN) Struktur Data - Queue

SINGLE LINKED LIST (NON CIRCULAR)

PROJECT UJIAN AKHIR SEMESTER MATA KULIAH STRUKTUR DATA Program Kalkulator Scientific Sederhana

Materi. Tipe, Variabel dan Operator Algoritma Pemrograman PENULISAN ALGORITMA PENULISAN ALGORITMA 15/03/2010 NAMA DAN EKSPRESI

A. TUJUAN PEMBELAJARAN

Materi 8 : STACK (TUMPUKAN) Dosen:

Modul Praktikum Algoritma dan Struktur Data

KONSEP POINTER DAN LINKED LIST

Algoritma Pemrograman & Struktur Data

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

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

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

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

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

MODUL PRAKTIKUM STRUKTUR DATA

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

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

ALGORITMA DAN STRUKTUR DATA

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

MODUL IV STACK A. TUJUAN

Struktur dan Organisasi Data 2 STRUKTUR DATA

Pengenalan Struktur Data dan Algoritma

KONSEP POINTER DAN LINKED LIST

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

KONSEP POINTER DAN LINKED LIST

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

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

BAB 1 TIPE DATA. Struktur Data 1. Sederhana : Array dan Record 2. Majemuk terdiri atas Linier Non Linier

Tugas #2 (kelompok, max. 3 orang)

KONSEP POINTER DAN LINKED LIST

Lab. Teknik Informatika Struktur Data 1

STRUKTUR DATA Pertemuan 6

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

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

Modul Praktikum Algoritma dan Struktur Data

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

LAPORAN PRAKTIKUM IX. Oleh:

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

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

POINTER PADA PASCAL. <nama_var> : ^<tipe_data>; <nama_var> : pointer;

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

BAB 1 TIPE DATA. Selain itu terdapat operasi MOD (Modulo) adalah sisa dari pembagian Contoh : 27 MOD 4 = 3

Transkripsi:

STACK (TUMPUKAN) Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Lihat gambar. Tumpukan uang koin Tumpukan kotak Tumpukan Buku Gambar. Macam-macam tumpukan Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas). 2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack. Halaman -

Sebagai contoh, misalkah ada data sebagai berikut : 3 6, maka data tersebut dapat tersimpan dalam bentuk sebagai berikut : N N- 6 3 2 3 2 6 N- N 3 6 2 N- N Gambar 2. Asumsi-asumsi penyimpanan stack Contoh lain adalah ada sekumpulan perintah stack yaitu push(), push(7), pop, push(3), pop,pop. Jika dijalankan, maka yang akan terjadi adalah : =0 Kosong 7 3 =0 Kosong Push() Push(7) Pop Push(3) Pop Pop Gambar 3. Proses operasi stack Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi dalam stack yaitu : Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :. Representasi stack dengan array 2. Representasi stack dengan single linked list Halaman - 2

Sebagai contoh representasi kedua cara tersebut dengan operasi yang dilakukan adalah push(), push(2), pop, push(), push(8), pos. Untuk lebih detail, perhatikan gambar di bawah ini : Representasi stack dengan menggunakan array dengan maksimal data adalah =0 Kondisi = 2 =2 2 =3 =2 8 =3 =2 Push() Push(2) Pop Push() Push(8) Pop awal Elemen berisi berarti nilai elemen tidak diketahui. Gambar 4. Representasi stack dengan menggunakan array Representasi stack dengan menggunakan single linked list =NULL 2 2 8 8 Kondisi awal Push() Push(2) Pop Push() Push(8) Pop Gambar. Representasi stack dengan menggunakan single linked list Halaman - 3

Operasi-operasi stack secara lengkap adalah sebagai berikut :. Pendeklarasian stack Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu : a. Pendeklarasian stack yang menggunakan array. Const Maxstack=.. Type Nama_Stack= array [..maxstack] of typedata Stack : Nama_Stack : Integer Suatu stack memiliki beberapa bagian yaitu top yang menunjuk posisi data terakhir (top) elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array. maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack. Halaman - 4

b. Pendeklarasian stack yang menggunakan single linked list Adapun stack yang menggunakan single linked list, hanya memerlukan suatu pointer yang menunjuk ke data terakhir (perhatikan proses di halaman sebelumnya). Setiap elemen linked list mempunyai 2 field yaitu elemen datanya dan pointer bawah yang menunjuk posisi terakhir sebelum proses push. Type Nama_pointer = simpul Simpul = Record <info : typedata, Next : Nama_pointer> Endrecord Var_pointer : Nama_pointer 2. Operasi Push Operasi push adalah operasi dasar dari stack. Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah. Langkah operasi ini adalah : a. Operasi push pada stack yang menggunakan array. Langkah operasi push dalam array adalah dengan : Stack dapat ditambah jika stack belum penuh Proses push-nya sendiri adalah dengan menambah field top dengan, kemudian elemen pada posisi top diisi dengan elemen data baru. b. Operasi push pada stack yang menggunakan single linked list Operasi push pada stack yang menggunakan single linked list adalah sama dengan proses tambahawal pada operasi linked list. Langkah-langkahnya adalah : Proses push-nya sendiri adalah dengan cara mengalokasikan suatu elemen linked list (disebut variable baru) dan memeriksa apakah stack kosong / tidak (lihat gambar halaman 3) 3. Operasi Pop Operasi pop adalah salah satu operasi paling dasar dari stack. Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut Halaman -

sehingga posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk function yang me-return-kan nilai sesuai data yang ada di top. a. Operasi pop pada stack yang menggunakan array. Langkah operasi pop pada stack yang menggunakan array adalah Stack dapat mengeluarkan elemennya jika stack tidak kosong Elemen yang dikeluarkan disimpan pada suatu variable Nilai top berkurang b. Operasi pop pada stack yang menggunakan single linked list Langkah operasi pop pada stack yang menggunakan single linked list adalah sama dengan proses hapusawal pada operasi single linked list. Prosesnya adalah : Periksa apakah.stack kosong (isempty), jika kosong maka proses pop tidak bisa dilakukan. Jika stack tidak kosong maka proses pop dijalankan. Proses pop-nya sendiri adalah mengambil elemen yang ditunjuk oleh pointer stack kemudian simpan dalam variable data. Kemudian buat variable pointer bantu yang diisi dengan pointer penunjuk stack yang nantinya akan dihapus dari memori. Kemudian pointer penunjuk stack dipindahkan ke posisi yang ditunjuk oleh field pointer bawah dari variable bantu. Halaman - 6

Contoh Implementasi Stack Notasi Polish (Polish Notation) Dalam operasi aritmatika, dikenal 3 jenis notasi, yaitu :. Notasi Infix (menempatkan operator di antara 2 operand) Contoh : A+B atau C-D atau E * F atau G / H 2. Notasi Prefix (menempatkan operator di depan / sebelum ke-2 operandnya) Contoh : +AB atau CD atau *EF atau /GH 3. Notasi Postfix (menempatkan operator di belakang/setelah operandnya) Contoh : AB+ atau CD- atau EF* atau GH/ Komputer umumnya hanya mengenal ekspresi matematika yang ditulis dalam notasi postfix. Ekspresi matematika yang ditulis dalam notasi infix agar dikenal oleh komputer harus diubah dengan memperhatikan :. Mengubah notasi infix menjadi postfix, kemudian menghitungnya 2. Menggunakan stack sebagai penampung sementara operator dan operandnya.. Mengubah Notasi Infix menjadi Notasi Postfix Dimisalkan Q adalah ekspresi matematika yang ditulis dalam notasi infix dan P adalah penampung ekspresi matematika dalam notasi postfix, maka algoritmanya adalah : a. Push tanda ( ke stack dan tambahkan tanda ) di sentinel di Q. b. Scan Q dari kiri ke kanan, kemudian ulangi langkah c s.d f untuk setiap elemen Q sampai stack Q kosong. c. Jika yang discan adalah operand, maka tambahkan ke P d. Jika yang discan adalah ( maka push ke stack e. Jika yang discan adalah ) maka pop isi stack sampai ditemukan tanda (, kemudian tambahkan ke P sedangkan tanda ( tidak disertakanke P. Halaman - 7

f. 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 tersebut dan tambahkan ke P. Push operator tersebut ke stack. g. Keluar Contoh kasus : Q : A + ( B * C - ( D / E ^ F ) * G ) * H Tambahkan ( ke stack dan tambahkan tanda ) ke sentinel Q sehingga Q menjadi Q : A + ( B * C - ( D / E ^ F ) * G ) * H ) Dari Q, terdapat 20 simbol yaitu : Q : A + ( B * C - ( D / E ^ F ) * G ) * H ) No 2 3 4 6 7 8 9 0 2 3 4 6 7 8 9 20 Urutan operasinya adalah : No Simbol Stack Ekspresi P ( A ( A 2 + (+ A 3 ( (+( A 4 B (+( AB * (+(* AB 6 C (+(* ABC 7 - (+(- ABC* 8 ( (+(-( ABC* 9 D (+(-( ABC*D 0 / (+(-(/ ABC*D E (+(-(/ ABC*DE 2 ^ (+(-(/^ ABC*DE 3 F (+(-(/^ ABC*DEF 4 ) (+(- ABC*DEF^/ * (+(-* ABC*DEF^/ 6 G (+(-* ABC*DEF^/G 7 ) (+ ABC*DEF^/G*- 8 * (+* ABC*DEF^/G*- 9 H (+* ABC*DEF^/G*-H 20 ) ABC*DEF^/G*-H*+ Dari proses di atas didapatkan bahwa postfixnya adalah ABC*DEF^/G*-H*+ Halaman - 8

2. Menghitung Ekspresi Matematika yang disusun dalam Notasi Postfix Diasumsikan P adalah ekspresi matematika yang ditulis dalam notasi postfix dan variable value sebagai penampung hasil akhir. Algoritmanya adalah : a. Tambahkan tanda ) pada sentinel di P b. Scan P dari kiri ke kanan, ulangi langkah c dan d untuk setiap elemen P sampai ditemukan sentinel. c. Jika yang discan adalah operand, maka push ke stack. d. Jika yang discan adalah operator (sebut opr), maka Pop buah elemen teratas dari stack, simpan dalam variable var. Pop buah elemen teratas dari stack, simpan dalam variable var2. Hitung variable (var2 opr var), simpan hasil di variable hitung. Push variable hitung ke stack. e. Pop isi stack dan simpan di variable value. f. Keluar. Contoh : P :, 2, 6, +, *, 2, 4, /, - Tambahkan tanda ) pada sentinel P sehingga P :, 2, 6, +, *, 2, 4, /, -, ) Dari P, didapatkan 0 simbol yaitu : P : 2 6 + * 2 4 / - ) No 2 3 4 6 7 8 9 0 Urutan operasinya adalah : No Simbol Stack Operasi Perhitungan 2 2, 2 3 6, 2, 6 4 +, 8 var=6,var2=2,hitung=2 + 6 =8 * 40 var=8,var2=,hitung= * 8 =40 6 2 40, 2 7 4 40, 2, 4 8 / 40, 3 var=4,var2=2,hitung=2 / 4 = 3 9-37 Var=3,var2=40,hitung=40 3 = 37 0 ) Perulangan selesai karena telah mencapai sentinel dan data dalam stack adalah 37 (hasil akhir). Jadi hasil operasi tersebut adalah : 37 Halaman - 9