FONDASI PEMROGRAMAN STRUKTUR DATA 11 Konsep Stack Stack

  • Slides: 25
Download presentation
FONDASI PEMROGRAMAN & STRUKTUR DATA #11 Konsep Stack & Stack Java API

FONDASI PEMROGRAMAN & STRUKTUR DATA #11 Konsep Stack & Stack Java API

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Apa itu Stack • Stack adalah tumpukan

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack dalam Struktur Data • Stack adalah suatu Abstract Data Type, secara umum digunakan pada kebanyakan Bahasa pemrograman. • Dinamakan Stack karena berperilaku seperti halnya tumpukan dalam dunia nyata. • Stacks digunakan sebagai kontainer untuk menampung object dan mengeluarkannya kembali dengan urutan tertentu.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Mekanisme (Cara Operasi) Stack • Beroperasi dengan cara First In Last Out (FILO) atau Last in First Out (LIFO). Exit Buku 4 Buku 3 Buku 2 Buku 1 Entry Stack dapat di-ilustrasikan seperti tumpukan buku; letakkan buku pertama di atas meja, kemudian tambahkan buku kedua di atasnya demikian seterusnya untuk buku selanjutnya.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Operasi Dasar Stack • Push() Operasi penambahan item di atas tumpukan (stack). • Pop() Operasi pengambilan atau mengeluarkan item dari tumpukan (stack).

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Operasi Push pada Stack • Proses push selalu menambahkan item baru di tumpukan paling atas (terakhir) pada stack.

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Operasi Pop pada Stack • Proses pop dimulai dari item pada tumpukan paling atas (terakhir) pada stack.

Pengenalan dan Penggunaan Stack Java API By: Augury El Rayeb

Pengenalan dan Penggunaan Stack Java API By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack dalam Struktur Data • Stack adalah suatu Abstract Data Type. • Stacks digunakan sebagai kontainer untuk menampung object dan mengeluarkannya kembali dengan urutan tertentu. Entry • Stack beroperasi dengan cara Last in First Out (LIFO) atau First In Last Out (FILO). Exit Object 4 Object 3 Object 2 Object 1

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack dengan Java API • Sebelum menggunakan class Stack Java API, lakukan import class Stack: import java. util. Stack; • Selanjutnya buat object instance-of stack Stack nama. Stack = new Stack(); • Kemudian gunakan method sesuai fungsinya. Method tersebut; push(), pop(), peek(), search(), empty()

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Method pada Class Stack Java API Method pada Class Stack Return Value boolean object int Nama Method dan Penjelasannya empty() menguji apakah stack kosong. peek() Melihat item apa yang berada posisi paling atas tanpa mengeluarkannya dari stack. pop() Mengeluarkan item pada posisi paling atas dan memberitahu item apa yang dikeluarkan (dalam bentuk return value object). push(<Item>) Memasukkan item dalam stack dan memberitahu item apa yang dimasukkan (dalam bentuk return value object). search(<item>) Mencari posisi suatu item dalam stack (posisi berupa nomor urut dari atas).

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Membuat Stack, Memeriksa Apakah Stack Empty dan Push (Memasukkan) Item ke dalam Stack 1 2 3 4 5 6 7 8 9 10 11 12 13 import java. util. Stack; public class Stack 1 { public static void main(String[] args) { Stack barang = new Stack(); System. out. println(“Apakah stack kosong? “ + barang. empty()); barang. push("Map"); System. out. println("barang " + barang. push("Buku") + " masuk stack"); System. out. println("barang " + barang. push(“Laptop") + " masuk stack"); System. out. println("barang " + barang. push(“Handphone") + " masuk stack"); System. out. println(“Apakah stack kosong? “ + barang. empty()); System. out. println(“Tumpukan barang (yang kiri paling bawah): “ + barang); } Output: } apakah stack kosong? true barang Buku masuk stack barang Laptop masuk stack barang Handphone masuk stack apakah stack kosong? false Tumpukan barang (yang kiri paling bawah): [Map, Buku, Laptop, Handphone]

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Peek (Melihat Item Posisi Paling Atas) pada Stack dan Pop (Mengeluarkan Item paling atas) dari Stack 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java. util. Stack; public class Stack 1 { public static void main(String[] args) { Stack barang = new Stack(); barang. push("Map"); barang. push("Buku"); barang. push(“Laptop"); barang. push(“Handphone"); System. out. println(“Tumpukan barang (yang kiri paling bawah): “ + barang); System. out. println(“Posisi paling atas: ” + barang. peek()); barang. pop(); System. out. println(“Posisi paling atas: ” + barang. peek()); System. out. println(“Barang paling atas: ” + barang. pop() + “ dikeluarkan”); System. out. println(“Tumpukan barang (yang kiri paling bawah): “ + barang); System. out. println(“Posisi paling atas: ” + barang. peek()); } Output: Tumpukan barang (yang kiri paling bawah): [Map, Buku, Laptop, Handphone] } Posisi paling atas: Handphone Posisi paling atas: Laptop Barang paling atas: Laptop dikeluarkan Tumpukan barang (yang kiri paling bawah): [Map, Buku] Posisi paling atas: Buku

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Contoh Search (Melihat Posisi Suatu Item dalam Stack) 1 2 3 4 5 6 7 8 9 10 11 12 13 import java. util. Stack; public class Stack 1 { public static void main(String[] args) { Stack barang = new Stack(); barang. push("Map"); barang. push("Buku"); barang. push(“Laptop"); barang. push(“Handphone"); System. out. println("Tumpukan barang (yang kiri paling bawah): " + barang); System. out. println("Posisi paling atas: " + barang. peek()); System. out. println("Buku berada posisi: " + barang. search("Buku") + " dari atas"); System. out. println("Laptop berada posisi: " + barang. search("Laptop") + " dari atas"); System. out. println("Map berada posisi: " + barang. search("Map") + " dari atas"); System. out. println(“Pulpen berada posisi: " + barang. search(“Pulpen") + " dari atas"); } Output: } Tumpukan barang (yang kiri paling bawah): [Map, Buku, Laptop, Handphone] Posisi paling atas: Handphone Buku berada posisi: 3 dari atas Laptop berada posisi: 2 dari atas Map berada posisi: 4 dari atas Pulpen berada posisi: -1 dari atas

Contoh Kasus Stack By: Augury El Rayeb

Contoh Kasus Stack By: Augury El Rayeb

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack Contoh Kasus Mengambil Item Berdasarkan Nama Item Entry Handphone Laptop Buku Map Exit Temp Entry • Misal kita memiliki stack barang dengan tumpukan seperti bisa dilihat di bawah. • Selanjutnya kita ingin mengeluarkan item Buku dari stack barang tersebut. • Karena item buku berada di bawah item laptop dan handphone, maka kedua item tersebut harus dikeluarkan lebih dahulu, agar item buku bisa dikeluarkan. • Setelah item buku keluar kita masukkan kembali item Laptop dan Handphone sesuai urutannya semula. • Untuk hal tersebut maka kita memerlukan stack temp sebagai penampung item-item Handphone dan Laptop yang dikeluarkan sementara. barang

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Stack Contoh Kasus Mengambil Item Berdasarkan Nama Item

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Kode Program Stack Contoh Kasus Mengambil Item Berdasarkan Nama Item import java. util. Stack; import java. util. Scanner; public class Stack 5 { public static void main(String[] args) { Stack barang = new Stack(); Stack temp = new Stack(); barang. push("Map"); barang. push("Buku"); barang. push("Laptop"); barang. push("Handphone"); System. out. println("Item yang dikeluarkan: " + cari); int posisi = barang. search(cari); System. out. println(cari+" berada posisi: "+posisi+" dari atas"); for(int i=1; i<=posisi-1; i++) { temp. push(barang. pop()); } System. out. println("Barang " + barang. pop() + " keluar"); System. out. println(" "); System. out. println("---- Isi Stack ----"); System. out. println("Tumpukan barang): " + barang); System. out. println("Item yang ingin dikeluarkan: "); Scanner masukan = new Scanner(System. in); String cari = masukan. next. Line(); for(int j=1; j<=posisi-1; j++) { barang. push(temp. pop()); } } } System. out. println("---- Isi Stack Sekarang ----"); System. out. println("Tumpukan barang: " + barang);

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack Contoh Kasus Memindahkan Item pada Tumpukan Bawah ke Atas Berdasarkan Nama Item • Misal kita memiliki stack barang dengan tumpukan seperti bisa dilihat di bawah. • Selanjutnya kita ingin memindahkan posisi item Map sehingga berada di atas item Laptop. Maka yang harus dilakukan adalah: Entry Temp 1 Handphone Laptop Buku Map Exit Temp 2 Exit Entry ▫ Mengeluarkan semua item stack barang sampai posisi item Map, dengan ketentuan: �Jika item yang dikeluarkan adalah Map, maka masukkan ke stack temp 2. �Jika item bukan Map, maka masukkan ke stack temp 1 ▫ Mengeluarkan semua item stack temp 1 dan memasukkan ke stack barang, dengan ketentuan: �Jika yang item dimasukkan adalah Laptop, maka keluarkan item stack temp 2 lalu masukkan ke stack barang. �Kemudian lanjutkan mengeluarkan item berikutnya dari stack temp 1 untuk dimasukkan ke stack barang

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Stack Contoh Kasus Memindahkan Item pada Tumpukan Bawah ke Atas Berdasarkan Nama Item

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Kode Program Stack Contoh Kasus Memindahkan Item pada Tumpukan Bawah ke Atas Berdasarkan Nama Item import java. util. Stack; import java. util. Scanner; public class Stack 5 { public static void main(String[] args) { Stack barang = new Stack(); Stack temp 1 = new Stack(); Stack temp 2 = new Stack(); barang. push("Map"); barang. push("Buku"); barang. push("Laptop"); barang. push("Handphone"); System. out. println("---- Isi Stack ----"); System. out. println("Tumpukan barang): " + barang); System. out. println("Item yang ingin dipindahkan: "); Scanner masukan = new Scanner(System. in); String item 1 = masukan. next. Line(); System. out. println("Posisi tujuan di atas item apa: "); masukan = new Scanner(System. in); } String item 2 = masukan. next. Line(); } System. out. println(item 1 + " akan dipindahkan di atas " + item 2); int posisi = barang. search(item 1); String temp. Item; for(int i=1; i<=posisi; i++) { temp. Item=barang. pop(). to. String(); if(temp. Item. equals(item 1)) { temp 2. push(temp. Item); } else { temp 1. push(temp. Item); } } for(int j=1; j<=posisi-1; j++) { temp. Item = barang. push(temp 1. pop()). to. String(); if (temp. Item. equals(item 2)) { barang. push(temp 2. pop()); } } System. out. println("---- Isi Stack Sekarang ----"); System. out. println("Tumpukan barang: " + barang);

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Stack Contoh Kasus Memindahkan Item pada Tumpukan Atas ke Bawah Berdasarkan Nama Item • Misal kita memiliki stack barang dengan tumpukan seperti bisa dilihat di bawah. • Selanjutnya kita ingin memindahkan posisi item Laptop sehingga berada di atas item Map. Maka yang harus dilakukan adalah: Entry Temp 1 Handphone Laptop Buku Map Exit Temp 2 Exit Entry ▫ Mengeluarkan semua item stack barang sampai posisi item Map, dengan ketentuan: �Jika item yang dikeluarkan adalah Laptop, maka masukkan ke stack temp 2. �Jika item bukan Laptop, maka masukkan ke stack temp 1 ▫ Mengeluarkan semua item stack temp 1 dan memasukkan ke stack barang, dengan ketentuan: �Jika yang item dimasukkan adalah Map, maka keluarkan item stack temp 2 lalu masukkan ke stack barang. �Kemudian lanjutkan mengeluarkan item berikutnya dari stack temp 1 untuk dimasukkan ke stack barang

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Algoritma Stack Contoh Kasus Memindahkan Item pada Tumpukan Atas ke Bawah Berdasarkan Nama Item

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 Kode Program Stack Contoh Kasus Memindahkan Item pada Tumpukan Atas ke Bawah Berdasarkan Nama Item import java. util. Stack; import java. util. Scanner; public class Stack 5 { public static void main(String[] args) { Stack barang = new Stack(); Stack temp 1 = new Stack(); Stack temp 2 = new Stack(); barang. push("Map"); barang. push("Buku"); barang. push("Laptop"); barang. push("Handphone"); System. out. println("---- Isi Stack ----"); System. out. println("Tumpukan barang): " + barang); System. out. println("Item yang ingin dipindahkan: "); Scanner masukan = new Scanner(System. in); String item 1 = masukan. next. Line(); System. out. println("Posisi tujuan di atas item apa: "); masukan = new Scanner(System. in); } String item 2 = masukan. next. Line(); } System. out. println(item 1 + " akan dipindahkan di atas " + item 2); int posisi. Target = barang. search(item 2); String temp. Item; for(int i=1; i<= posisi. Target; i++) { temp. Item=barang. pop(). to. String(); if(temp. Item. equals(item 1)) { temp 2. push(temp. Item); } else { temp 1. push(temp. Item); } } for(int j=1; j<= posisi. Target -1; j++) { temp. Item = barang. push(temp 1. pop()). to. String(); if (temp. Item. equals(item 2)) { barang. push(temp 2. pop()); } } System. out. println("---- Isi Stack Sekarang ----"); System. out. println("Tumpukan barang: " + barang);

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST

Augury El Rayeb, S. Kom. , MMSI. Fondasi Pemrograman & Struktur Data | IST 101 See You Next Topic Thanks