TI 014 STRUKTUR DATA Stack Tumpukan Pertemuan 4

  • Slides: 27
Download presentation

TI 014 – STRUKTUR DATA Stack (Tumpukan) Pertemuan 4 Season 1

TI 014 – STRUKTUR DATA Stack (Tumpukan) Pertemuan 4 Season 1

Definisi STACK / TUMPUKAN ?

Definisi STACK / TUMPUKAN ?

Tumpukan (stack) adalah struktur data yang memungkinakn penyisipan dan pengambilan data dilakukan dari satu

Tumpukan (stack) adalah struktur data yang memungkinakn penyisipan dan pengambilan data dilakukan dari satu ujung yang disebut puncak. Cara yang paling mudah untuk meletakkan data ke dalam tumpukan adalah dengan menaruhnya di bagian puncak.

Ilustrasi stack

Ilustrasi stack

Teori Tumpukan Teori tumpukan sebenarnya sangat mudah. Kita bisa membayangkan bahwa tumpukan itu diibaratkan

Teori Tumpukan Teori tumpukan sebenarnya sangat mudah. Kita bisa membayangkan bahwa tumpukan itu diibaratkan dengan sebuah keranjang pakaian. Pakaian yang pertama kali dimasukkan kedalam keranjang akan berada di posisi bawah, sedangkan pakaian yang terakhir dimasukkan berada di posisi paling atas. Dengan demikian, ketika pakaian dalam keranjang tersebut dikeluarkan, pakaian yang pertama kali masuk adalah yang paling terakhir keluar

Dengan pemahaman tersebut dapar disimpulkan bahwa tumpukan adalah struktur data yang menggunakan konsep first

Dengan pemahaman tersebut dapar disimpulkan bahwa tumpukan adalah struktur data yang menggunakan konsep first come last served (FCLS) atau Last-in First-out (LIFO). Yang artinya elemen/data terakhir yang disimpan dalam tumpukan menjadi elemen/data pertama yang akan diambil

Metode dalam Stack Metode Keterangan Push(arg) Menyisipkan data arg di puncak tumpukan Pop() Mengambil

Metode dalam Stack Metode Keterangan Push(arg) Menyisipkan data arg di puncak tumpukan Pop() Mengambil data yang ada di puncak tumpukan. Jika tumpukan kosong, akan terjadi eksepsi Empty. Stack. Exception Peek() Memberikan nilai balik berupa elemen yang ada di puncak tanpa menghapusnya. Jika tumpukan kosong, akan terjadi eksepsi Empty. Stack. Exception Empty() is. Empty() Menghasilkan nilai true kalau tumpukan kosong, dan false kalau tumpukan berisi data Get(indeks) Menghasilkan elemen yang posisinya sama dengan indeks first. Elemen()) Menghasilkan elemen pertama last. Elemen() Menghasilkan elemen terakhir Clear() Menghapus semua elemen ditumpukan Remove(indeks) Menghapus elemen yang posisinya sama dengan indeks

Conoth program tumpukan import java. util. Stack; public class Contoh. Tumpukan 2 { public

Conoth program tumpukan import java. util. Stack; public class Contoh. Tumpukan 2 { public static void main(String[] args) { // Buat objek Stack<String> tumpukan = new Stack<String>(); // Masukkan 9 nama tumpukan. push("Aminudin"); tumpukan. push("Zaskia"); tumpukan. push("Rina Melati"); tumpukan. push("Farhan"); tumpukan. push("Agnes Monica"); tumpukan. push("Dian Susilo"); tumpukan. push("Karman Julia"); tumpukan. push("Dani Adipta"); tumpukan. push("Kartika Putri"); // Kosongkan isi tumpukan dan tampilkan System. out. println("Isi tumpukan: "); while (! tumpukan. empty()) { String nama = tumpukan. pop(); System. out. println(nama); } } }

Hasil Running Program

Hasil Running Program

Tumpukan dengan Array Tumpukan dapat dibuat menggunakan berbagai cara, salah satunya dengan menggunakan array.

Tumpukan dengan Array Tumpukan dapat dibuat menggunakan berbagai cara, salah satunya dengan menggunakan array. Contoh implementasinya dalah : jumlah elemen array dibatasi hanya 8 data saja. Dapat dilihat penggunaan stack dengan array nya seperti berikut :

public class Contoh. Tumpukan { public static void main(String[] args) { Tumpukan tumpukan =

public class Contoh. Tumpukan { public static void main(String[] args) { Tumpukan tumpukan = new Tumpukan(); // Buat objek // Masukkan 9 nama tumpukan. push("Aminudin"); tumpukan. push("Zaskia"); tumpukan. push("Rina Melati"); tumpukan. push("Farhan"); tumpukan. push("Agnes Monica"); tumpukan. push("Dian Susilo"); tumpukan. push("Karman Julia"); tumpukan. push("Dani Adipta"); tumpukan. push("Kartika Putri"); // Kosongkan isi tumpukan dan tampilkan System. out. println("Isi tumpukan: "); while (! tumpukan. empty()) { String nama = tumpukan. pop(); System. out. println(nama); } class Tumpukan { final int MAKSDATA = 8; private String[] tumpukan = new String[MAKSDATA]; private int puncak; // Konstruktor public Tumpukan() { puncak = -1; } // Memasukkan data ke tumpukan // Nilai balik berupa false // kalau tumpukan sudah penuh public boolean push(String data) { // Periksa kalau tumpukan penuh if (puncak == (MAKSDATA - 1)) { System. out. print("Tumpukan penuh! "); System. out. println(data + " tidak dimasukkan. "); return false; } // Masukkan data ke tumpukan puncak++; tumpukan[puncak] = data; // Lakukan pop() sewaktu tumpukan kosong System. out. println("Mencoba pop() pada tumpukan kosong: "); System. out. println(tumpukan. pop()); } return true; } }

Lanjutan… public String pop() { if (! empty()) return tumpukan[puncak--]; else return "**error**"; //

Lanjutan… public String pop() { if (! empty()) return tumpukan[puncak--]; else return "**error**"; // menyatakan // tumpukan sudah habis } public boolean empty() { return (puncak == -1); } }

Memahami kode pada kelas Tumpukan Konstruktor kelas berupa : Public Tumpukan(){ puncak = -1;

Memahami kode pada kelas Tumpukan Konstruktor kelas berupa : Public Tumpukan(){ puncak = -1; } Pada kode diatas, puncak diisi dengan -1, yang menyatakan bahwa tumpukan tidak berisi data sama sekali. Diluar konstruktor, kelas Tumpukan memiliki tiga metode anggota yaitu push(), pop() dan empty()

Metode anggota push() public boolean push(String data) { // Periksa kalau tumpukan penuh if

Metode anggota push() public boolean push(String data) { // Periksa kalau tumpukan penuh if (puncak == (MAKSDATA - 1)) { System. out. print("Tumpukan penuh! "); System. out. println(data + " tidak dimasukkan. "); return false; } // Masukkan data ke tumpukan puncak++; tumpukan[puncak] = data; return true; }

Pada metode anggota push(), data yang menjadi argumen tidak jadi dimasukkan ke dalam array

Pada metode anggota push(), data yang menjadi argumen tidak jadi dimasukkan ke dalam array sekiranya isi puncak sudah sama dengan MAKSDATA - 1. Kalau tumpukan belum penuh, mula isi puncak dinaikkan sebesar satu. Selanjutnya, data diletakkan pada Tumpukan[Puncak]

Metode Anggota empty() Metode anggota empty() berguna untuk mengetahui tumpukan dalam keadaan kosong atau

Metode Anggota empty() Metode anggota empty() berguna untuk mengetahui tumpukan dalam keadaan kosong atau tidak. Metode tersebut menghasilkan nilai true kalau tumpukan dalam keadaan kosong. Pada program kodenya adalah : public boolean empty() { return (puncak == -1); } }

Apabila isi puncak berupa -1 (berarti tidak ada data dalam tumpukan), metode anggota empty()

Apabila isi puncak berupa -1 (berarti tidak ada data dalam tumpukan), metode anggota empty() menghasilkan nilai berupa true. Untuk keaadaan sebaliknya, nilai balik berupa false

Metode anggota pop() merupakan metode yang ditujukan untuk mengambil sebuah data dari tumpukan. Kode

Metode anggota pop() merupakan metode yang ditujukan untuk mengambil sebuah data dari tumpukan. Kode program implementasinya adalah : public String pop() { if (! empty()) return tumpukan[puncak--]; else return "**error**"; //menyatakan tumpukan sudah habis }

Nilai balik berupa string “**error**” jika tumpukan sudah kosong ketika pop() dipanggil. Kalau tidak

Nilai balik berupa string “**error**” jika tumpukan sudah kosong ketika pop() dipanggil. Kalau tidak kosong, nilai balik berupa isi tumpukan [puncak] dan sesudah itu nilai puncak diturunkan sebesar satu. Pengujian kosong tidaknya suatu tumpukan dilakukan dengan memanfaatkan metode anggota empty()

Memahami kode pada main() Kode pada main() digunakan untuk menguji ketiga metode anggota dalam

Memahami kode pada main() Kode pada main() digunakan untuk menguji ketiga metode anggota dalam kelas Tumpukan. Pengujian dilakukan dengan mula-mula melaksanakan pembuatan objek bernama tumpukan melalui perintah : Tumpukan tumpukan = new Tumpukan ();

Dalam keadaan awal, tumpukan dalam keadaan kosong. Pernyataan : tumpukan. push("Aminudin"); tumpukan. push("Zaskia"); tumpukan.

Dalam keadaan awal, tumpukan dalam keadaan kosong. Pernyataan : tumpukan. push("Aminudin"); tumpukan. push("Zaskia"); tumpukan. push("Rina Melati"); tumpukan. push("Farhan"); tumpukan. push("Agnes Monica"); tumpukan. push("Dian Susilo"); tumpukan. push("Karman Julia"); tumpukan. push("Dani Adipta"); tumpukan. push("Kartika Putri");

Memasukkan sembilan data ke dalam tumpukan. Penyisipan data yang kesembilan digunakan untuk menguji efek

Memasukkan sembilan data ke dalam tumpukan. Penyisipan data yang kesembilan digunakan untuk menguji efek kalau tumpukan sudah penuh (mengingat jumlah elemen yang dapat ditampilkan ditumpukan adalah 8). Selanjutnya isi tumpukan dikeluarkan melalui :

while (! tumpukan. empty()) { String nama = tumpukan. pop(); System. out. println(nama); }

while (! tumpukan. empty()) { String nama = tumpukan. pop(); System. out. println(nama); } Kode di atas menyatakan bahwa selama isi tumpukan tidak kosong maka : - Sebuah data dikeluarkan melalui pop() dan meletakkan ke variabel nama; - Isi variabel nama ditampilkan melalu System. out. println() Pernyataan : System. out. println(tumpukan. pop()); digunakan untuk menguji pop() sewaktu tumpukan dalam keadaan kosong.

Perwujudan Tumpukan dengan Stack Untuk memudahkan perwujudan tumpukan, java menyediakan kelas bernama Stack. Penggunaan

Perwujudan Tumpukan dengan Stack Untuk memudahkan perwujudan tumpukan, java menyediakan kelas bernama Stack. Penggunaan kelas ini memerlukan pernyataan : import java. util. Stack; Dengan menggunaak kelas tersebut, tidak perlu algi membuat kelas khusus untuk mewujudkan tumpukan. Sebagai gantinya dilakukan dengan menulis perintah : Stack<String> tumpukan = new Stack<String>();

SEKIAN dan TERIMA KASIH

SEKIAN dan TERIMA KASIH