BAB II STACK Atau TUMPUKAN

dokumen-dokumen yang mirip
S T A C K ( T U M P U K A N )

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

BAB 3 STACK (TUMPUKAN)

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

BAB II STACK (TUMPUKAN)

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

STRUKTUR DATA Pertemuan 4

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

4. STACK / TUMPUKAN TEORI PENUNJANG

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

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

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

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

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

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

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

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

BAB IX LINKED LIST (SENARAI BERANTAI)

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

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

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Algoritma dan Struktur Data STACK

BAB II LANDASAN TEORI

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

Struktur Data. Queue (Antrian)

ALGORITMA DAN STRUKTUR DATA

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Struktur Data Array. Rijal Fadilah S.Si

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

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

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

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

BAB III STACK ATAU TUMPUKAN

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

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

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

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

BAB III QUEUE (ANTRIAN)

LIST LINIER 1. DEFINISI

Lab. Teknik Informatika Struktur Data 1

MODUL PRAKTIKUM STRUKTUR DATA

Algoritma Dan Struktur Data II

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

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

Representasi Logic List Linier

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

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

S TA C K Sunu Wibirama

Pendahuluan Struktur Data. Nisa ul Hafidhoh

QUEUE (ANTRIAN) Struktur Data - Queue

Gambar 1. Ilustrasi Stack

BAB 2 LANDASAN TEORI

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

Array. Array mempunyai dimensi : 1. Array Dimensi Satu (Vektor) 2. Array Dimensi Banyak. - Dimensi Dua (Matriks/Tabel) - Dimensi Tiga (Kubik).

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

ARNA FARIZA YULIANA SETIOWATI

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

Praktikum 4. Tumpukan (Stack)

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

A. TUJUAN PEMBELAJARAN

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

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Aplikasi Rekursif dalam Analisis Sintaks Program

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

LOGO STRUKTUR DATA QUEUE

BAB XI Manipulasi Binary Tree

Bagian I. Studi Kasus [82] Tanda tangan:

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

6. TREE / BINARY TREE

Algoritma Dan Struktur Data II

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

Pertemuan 7. REVIEW dan QUIS

Struktur Data. Pertemuan 2

BAB 1 PENGANTAR KE STRUKTUR DATA

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

IKG2A3/ Pemrograman Terstruktur 2

Struktur Data. PDE - Struktur Data 1

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

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

Stack. Gambar 1.1 Stack

Teori Algoritma TIPE DATA

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Gambar 2.1 Ilustrasi Stack

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

Modul Praktikum Algoritma dan Struktur Data

BAB IV IMPLEMENTASI DAN PENGUJIAN

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Transkripsi:

BAB II STACK Atau TUMPUKAN List Linear (Daftar Linear). List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya disebut simpul (node). Simpul terdiri dari dua bagian yaitu Info dan Next. Secara umum list linear ditulis sebagai Type elemenn = Record Info : <tipe info>; Next : <address>; End; Narwen, M.Si / Jurusan Matematika FMIPA Unand 1

Narwen, M.Si / Jurusan Matematika FMIPA Unand 2 Dalam hal ini, Info adalah sebuah tipe terdefenisi yang menyimpan informasi dari sebuah elemen list atau node. Sedangkan Next adalah address dari elemen berikutnya (suksesor). Selain node pertama dan terakhir, maka setiap node memiliki sebuah node suksesor langsung dan predesesor langsung. Disini, banyak simpul dapat berubah-ubah. Dengan demikian, jika didefinisikan First adalah alamat elemen pertama dari list, maka elemen berikutnya dapat diakses secara suksesif dari elemen pertama tersebut.

Jadi, sebuah list linier dikenali: elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut FIRST. alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field NEXT. setiap elemen mempunyai alamat, yaitu tempat elemen yang disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefenisi. Dengan alamat tersebut Informasi yang tersimpan pada elemen list dapat diakses. elemen terakhirnya. Ada berbagai cara untuk mengenali elemen akhir. Narwen, M.Si / Jurusan Matematika FMIPA Unand 3

Narwen, M.Si / Jurusan Matematika FMIPA Unand 4 Jika L adalah list dan P adalah address maka alamat elemen pertama dari list L dapat diacu dengan notasi, First (L). Elemen yang diacu oleh address P dapat dikonsultasikan informasinya dengan notasi, Info(P) Next(P). Beberapa defenisi: 1. List L adalah List kosong, jika First (L) = Nil. 2. Elemen terakhir dikenali dengan salah satu cara adalah karena Next(Last) = Nil. Satu node dapat dihapus atau dimasukan sebagai anggota list pada posisi sembarang.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 5 Contoh dari linked linear adalah : File, Stack atau tumpukan, Queue atau antrian dan Daftar berkait atau linear linked list atau one-way list.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 6 STACK atau TUMPUKAN. STACK (Tumpukan) adalah bentuk khusus dari list linier. Pada stack, penghapusan serta penyisipan elemennya hanya dapat dilakukan pada satu posisi akhir dari list. Posisi ini disebut puncak atau TOP dari stack. Elemen stack S pada posisi ini dinyatakan dengan TOP(S). Karena aturan penyisipan dan penghapusan semacam itu, maka TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang pertama akan dihapus. Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out).

Narwen, M.Si / Jurusan Matematika FMIPA Unand 7 Secara lojik, sebuah STACK dapat digambarkan sebagai list linier yang setiap elemennya adalah, Type ElemenS = Record Info : <tipe info>; Next : <address>; End; Dengan Tipe Info terdefinisi akan menentukan informasi yang disimpan pada setiap elemen stack, dan address adalah alamat dari elemen. Selain itu alamat elemen terbaru (TOP) dicatat, sedangkan alamat elemen yang paling bawah, yaitu yang paling lama biasanya disebut BOTTOM. TOP adalah elemen pertama list, supaya penambahan dan penghapusan dengan mudah dan efisien dapat dilakukan.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 8 Sehingga, jika S adalah sebuah Stack, dan P adalah address maka, Top (S) adalah alamat elemen TOP, dimana operasi penyisipan/penghapusan dilakukan. Info (P) adalah informasi yang disimpan pada alamat P Next (P) adalah alamat suksesor P. ElemenS (P) adalah sebuah elemen stack yang beralamatkan P. Stack kosong adalah Stack dengan Top (S) = Nil, atau tidak terdefinisi.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 9 Operasi Pada Stack. 1. EMPTY(S) : memeriksa apakah stack S kosong atau tidak. Hasilnya data bertipe boolean. empty(s) bernilai true jika S kosong dan false kalau tidak kosong. 2. PUSH(S,E) : menambahkan elemen E pada stack S. Elemen E ditempatkan sebagai TOP(S). Kesalahan akan terjadi bila dilakukan PUSH(S,E) terhadap stack yang sudah penuh. 3. POP(S) : mengeluarkan elemen TOP(S) dari dalam Stack S. POP(S) akan mengurangi nilai NOEL(S) dgn 1. Kesalahan terjadi bila dilakukan POP(S) terhadap Stack S yang kosong.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 10 Deklarasi Stack dengan PASCAL : Const maxstack = 100; Type Stack = Record item : array[1..maxstack] of Integer; top : 0..maxstack; end; Var S : Stack; Function Empty(s:Stack) : boolean; Begin if S.top = 0 then empty := true else empty := false End;

Narwen, M.Si / Jurusan Matematika FMIPA Unand 11 Procedure Push(var s:stack; x : Integer); Begin if S.top = maxstack then error( stack overflow ) else begin s.top := s.top + 1; s.item[s.top] := x; end; End; Function Pop(var s:stack): Integer; Begin if empty(s) then error( stack underflow ) else begin pop := s.item[s.top]; s.top := s.top - 1 end; End;

Narwen, M.Si / Jurusan Matematika FMIPA Unand 12 Aplikasi dari Stack. Stack sangat luas pemakaiannya. Beberapa pemakaian stack dapat dilihat pada contoh berikut. 1. Matching Parentheses (Penjodohan Tanda Kurung). Misalkan suatu ekspresi matematika berisi tanda kurung {, (, [, }, ) dan ]. Selanjutnya akan diperiksa apakah ekpresi tersebut valid atau tidak. Algoritmanya adalah sebagai berikut. Amati barisan elemen dari kiri ke kanan. - Bila ditemukan kurung pembuka, maka PUSH tanda kurung tersebut ke dalam stack S. - Bila ditemukan kurung penutup, lakukan <> jika stack S kosong maka ekspresi tidak valid dan selesai <> jika stack S tak kosong maka periksa, -- jika top dari stack S tidak sesuai dengan tanda kurung penutup maka ekspresi tidak valid dan selesai.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 13 -- jika top dari stack S sesuai dengan tanda kurung penutup maka pop elemen dari stack S dan periksa elemen berikutnya dari ekspresi. - Bila sudah diakhir dan stack S kosong maka Ekspresi valid sebaliknya tidak valid.. Contoh. Periksa apakah ekspresi berikut valid atau tidak. a. {[a+b]-[(c-d)] b. {x+(y-[a+b])*c-[(d+e)]}/(h-(j-(k-[l-n]))) Latihan. Buat program pascal untuk menyelesaikan masalah matching parentheses tersebut.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 14 2. Menghitung nilai ekspresi. Diberikan sebuah ekspresi matematika. Akan dihitung berapa nilai dari ekspresi tersebut bila diketahui nilai-nilai dari variabelnya. Algoritmanya sebagai berikut. Modifikasi algoritma untuk menyelesaikan masalah matching parentheses. Amati baris elemen dari kiri ke kanan. - Bila ditemukan kurung pembuka, maka PUSH tanda kurung tersebut ke dalam stack S1. - Bila ditemukan operand, maka push operand tersebut ke dalam stack S2. - Bila ditemukan operator, maka push operator tersebut ke dalam stack S3. - Bila ditemukan kurung penutup, maka <> jika stack S1 kosong maka ekspresi tidak valid dan selesai

Narwen, M.Si / Jurusan Matematika FMIPA Unand 15 <> jika stack S1 tak kosong maka periksa, jika top dari stack S1 sesuai dengan tanda kurung maka * POP elemen dari stack S1 * POP dua elemen dari stack S2 * POP elemen dari stack S3 * operasikan dua elemen stack S2 dengan elemen S3 * PUSH hasilnya ke dalam stack S2, periksa elemen berikutnya dari ekspresi. Contoh. Hitung nilai ekspresi (((y-1)/x)*(x+y)), bila diketahui nilai x = 2 dan y = 5. Latihan. Buat program pascal untuk menyelesaikan masalah menghitung nilai ekspresi tersebut.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 16 3. Notasi INFIX, POSTFIX dan PREFIX. Awalan pre, post dan in menyatakan posisi relatif dari operator terhadap operand. - Infix : bentuk penulisan dimana operator terletak antara dua operand. - Postfix : bentuk penulisan dimana operator didahului oleh dua operand. - Prefix : bentuk penulisan dimana operator mendahului dua operand. Misalnya, A+B Infix AB+ Postfix +AB Prefix

Narwen, M.Si / Jurusan Matematika FMIPA Unand 17 Pada operator biner, hirarki pengerjaan dimulai dari : 1. Pangkat ($), 2. Perkalian dan pembagian (*, /), 3. Penjumlahan dan pengurangan (+, -). Tapi bila digunakan tanda kurung, maka hirarki di atas tidak berlaku lagi. Dalam notas infix, penggunaan tanda kurung akan menentukan makna dari bentuk ekspresi. Tanpa tanda kurung, maka ekspresi matematika dapat bermakna ganda. Untuk menghindari makna ganda tersebut, maka ekspresi dapat ditulis dalam bentuk postfix atau prefix. Operator *, +, - dan / dalam infix tanpa tanda kurung dibaca dari kiri ke kanan, sedangkan operator $ dibaca dari kanan ke kiri.

Narwen, M.Si / Jurusan Matematika FMIPA Unand 18 Contoh : Rubah ke notasi prefix dan postfix dari bentuk infix berikut. a. a b + c b. ( a + b ) * ( c d ) c. a + b * c d d. a $ b * c d + e / f / ( g + h ) e. ( ( a + b ) * c ( d e ) ) $ ( f + g ) f. a b / ( c * d $ e )

Menghitung nilai dari ekspresi Postfix. - Setiap operator dari bentuk postfix mengacu pada dua operand yang mendahuluinya. Akibatnya ada satu operand yang merupakan hasil aplikasi dari operator tersebut. - Bila diaplikasikan ke Stack, maka setiap kali ditemukan operand, lakukan PUSH pada stack dan bila ditemukan operator, lakukan POP terhadap dua elemen TOP dari stack, kemudian lakukan operasi matematika terhadap kedua elemen tersebut sesuai dengan operator yang ditemukan. Selanjutnya lakukan PUSH terhadap hasil operasi itu. Algoritmanya adalah sebagai berikut, Narwen, M.Si / Jurusan Matematika FMIPA Unand 19

Narwen, M.Si / Jurusan Matematika FMIPA Unand 20 Inisialisasi nilai Stack,opnstk ke kosong; Baca input string per elemen dan masukkan ke symb; While masih ada karakter dalam input string do Begin symb := input karakter if symb adalah operand then push(opnstk,symb) else begin opnd2 := pop(opnstk); opnd1 := pop(opnstk); value := hasil aplikasi symb terhadap opd1,opnd2; push(opnstk,value); end; End; Contoh. Hitung nilai dari ekpspresi postfix berikut: 6 2 3 + - 3 8 2 / + * 2 $ 3 +

Mengkonversi bentuk Infix ke Postfix. - Urutan operand dalam postfix harus sama dengan urutan operand dalam infix. - Kalau infix tanpa tanda kurung, maka urutan sesuai dengan hirarki. - Maka definisikan fungsi, Prcd (op1,op2 : char) : boolean; Fungsi ini bernilai True, jika op1 muncul lebih dahulu dari op2 dalam urutannya, sebaliknya bernilai False. Misalnya : prcd( *, + ) dan prcd( +, + ) bernilai true prcd( +, * ) bernilai false. Algoritmanya adalah sebagai berikut, Narwen, M.Si / Jurusan Matematika FMIPA Unand 21

Narwen, M.Si / Jurusan Matematika FMIPA Unand 22 Inisialisasi nilai Stack,opnstk ke kosong; Inisialisasi string postfix ke blank Baca input string per elemen dan masukkan ke symb; While masih ada karakter dalam input string do Begin symb := input karakter if symb adalah operand then tambahan symb ke string postfix else begin while (not empty(opstk)) and (prcd(stacktop(opstk),symb)) do begin topsymb := pop(opstk); tambahkan topsymb ke string postfix end; push(opstk,symb); (*) end;end; While not empty(opstk); Do begin topsymb := pop(opstk) tambahkan topsymb ke string postfix End;end;

Narwen, M.Si / Jurusan Matematika FMIPA Unand 23 Algoritma di atas digunakan kalau bentuk infix tanpa tanda kurung. Kalau infix dengan tanda kurung, maka ganti garis bertanda (*) pada algoritma di atas menjadi, If (empty(opstk)) or (symb <> ) then push(opnstk,symb) else topsymb := pop(opnstk); Contoh. Konversi bentuk infix berikut ke bentuk postfix. 1. A + B * C 2. (A + B ) * C 3. (( A ( B + C )) * D ) $ (E + F)