LAPORAN STACK “TUMPUKAN” STRUKTUR DATA DISUSUN OLEH : SITI JAMILAH (1800631009) PROGRAM STUDI D3 MANAJEMEN INFORMATIKA FUKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH JEMBER TAHUN AJARAN 2019 KATA PENGANTAR Puji syukur kehadirat Allah Yang Maha Esa atas segala rahmatNYA sehingga laporan ini dapat tersusun hingga selesai . Tidak lupa saya juga mengucapkan banyak terimakasih atas bantuan dari pihak yang telah berkontribusi dengan memberikan sumbangan baik materi maupun pikirannya. Dan harapan saya semoga laporan ini dapat memenuhi tugas tugas mata kuliah Struktur Data dan semoga dapat menambah pengetahuan saya. Saya selaku penyusun berusaha mengerjakan dan menyelesaikannya dengan semaksimal mungkin. Walaupun sangat jauh dari kesempurnaan dan bahkan mungkin tidak sesuai dengan yang diharapkan, namun penyusun berharap Bapak dosen dapat menerima Makalah yang penyusun buat dengan berjudul “STACK ( TUMPUKAN )” ini. Karena keterbatasan pengetahuan maupun pengalaman saya, saya berharap Bapak dapat memberi saran atau masukan agar makalah ini menjadi baik ataupun lebih baik lagi. Jember, 29 Oktober 2019 Penyusun DAFTAR ISI KATA PENGANTAR ........................................................................................................................... 1 BAB I ...................................................................................................................................................... 4 PENDAHULUAN ................................................................................................................................. 4 1.1 Latar Belakang .............................................................................................................................. 4 1.2 Rumusan Masalah ......................................................................................................................... 4 1.3 Maksud dan Tujuan....................................................................................................................... 4 BAB II .................................................................................................................................................... 5 PEMBAHASAN .................................................................................................................................... 5 2.1 Pengertian Stack (Tumpukan) ....................................................................................................... 5 2.2 Alasan Aplikasi Stack digunakan ................................................................................................. 5 2.3 Operasi-Operasi pada Stack .......................................................................................................... 6 2.4 Kelebihan dan Kekurangan Stack ................................................................................................. 7 2.5 Contoh Codingan Stack pada JAVA ............................................................................................. 8 BAB III................................................................................................................................................. 10 PENUTUP............................................................................................................................................ 10 3.1 Kesimpulan ................................................................................................................................. 10 3.2 Saran ........................................................................................................................................... 10 DAFTAR PUSTAKA .......................................................................................................................... 11 BAB I PENDAHULUAN 1.1 Latar Belakang Salah satu konsep yang sangat berguna dalam ilmu komputer adalah satu bentuk struktur data yang disebut dengan stack (tumpukan). Dalam hal ini kita akan coba mengenali mengapa stack (tumpukan) sangat berguna dan memainkan peranan penting dalam pemrograman dan bahasa pemrograman. 1.2 Rumusan Masalah 1. Apa yang dimaksud dengan Stack (Tumpukan) ? 2. Mengapa aplikasi stack digunakan ? 3. Apa saja Operasi dasar pada Stack ? 4. Apa saja Kelebihan dan Kekurangan Stack ? 5. Bagaimana penerapan stack pada JAVA ? 1.3 Maksud dan Tujuan Adapun maksud dari pembuatan laporan ini adalah untuk memenuhi salah satu tugas mata kuliah “Struktur Data”, selain itu juga untuk menambah wawasan kami tentang materi “Stack”. Tujuan dari pembuatan laporan ini adalah memahami garis besar dari konsep “Stack”, memahami operasi-operasi dasar pada stack. Dan juga dapat mengidentifikasi permasalahanpermasalahan pemrograman yang harus diselesaikan dengan menggunakan “stack”, sekaligus menyelesaikannya. BAB II PEMBAHASAN 2.1 Pengertian Stack (Tumpukan) Penggunaan stack atau tumpukan merupakan salah sastu komponen penting untuk menjamin proses penanganan suatu data disamping hal lain seperti quenue (antrian), linked list, dan tree.Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk urutan linear, dimana saat operasi penambahan dan penghapusan datanya selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack. Karakteristik penting stack adalah bersifat LIFO (Last In First Out) artinya data yang terakhir masuk merupakan data yang akan keluar terlebih dahulu. Kita asumsikan saja misalnya memasukkan data alfabet secara urut dari a sampai e (a-b-c-d-e). Kemudian ingin mengeluarkan alfabet b, maka yang harus dilakukan adalah mengeluarkan alfabet e, d dan c secara berurut hingga akhirnya dapat mengakses b. Stack merupakan suatu susunan koleksi data dimana dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan Top Of Stack. Dalam proses komputasi, untuk meletakkan sebuah elemen pada bagian atas dari stack, maka kita melakukan push. Dan untuk memindahkan dari tempat yang atas tersebut, kita melakukan pop. 2.2 Alasan Aplikasi Stack digunakan Aplikasi stack digunakan untuk berbagai macam keperluan seperti pengujian kalimat palindrome, penguji tanda kurung (matching parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi notasi postfix. Pada perhitungan aritmetika, notasi infix adalah notasi yang menempatkan operator ditengah dua operand, sedangkan notasi postfix adalah notasi yang menempatkan operator setelah dua operand. Penggunaan notasi infix merupakan hal yang lumrah digunakan dalam perhitungan aritmetika dibandingkan dengan notasi postfix, akan tetapi bagi mesin komplikasi postfix merupakan notasi yang digunakan untuk melakukan suatu perhitungan. Stack juga biasa digunakan dalam mengontrol operasi dalam sebuah sistem operasi. Selain itu stack juga merupakan algoritma yang baik yang dapat digunakan untuk membuat phaser (membaca urutan operasi dari sebuah persamnaan matematika). 2.3 Operasi-Operasi pada Stack Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah Push dan Pop. Operasi – operasi yang dapat diterapkan adalah sebagai berikut : 1. Push : Operasi push adalah operasi dasar dari stack yang berguna untuk menambahkan suatu elemen data baru pada stack pada tumpukan paling atas dan di simpan pada posisi top yang akan mengakibatkan posisi top akan berubah.. 2. Pop : Operasi paling besar dari stack yang digunakan untuk mengambil elemen terakhir(top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Sebagai contoh, misalkah ada data sebagai berikut : 1 3 5 6, maka data tersebut dapat tersimpan dalam bentuk sebagai berikut : Contoh lain adalah ada sekumpulan perintah stack yaitu push(5), push(7), pop, push(3), pop. Jika dijalankan, maka yang akan terjadi adalah : 3. Clear : digunakan untuk mengosongkan Stack. 4. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong. 5. MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen dihapus. 6. IsEmpty : Operasi yang digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini dilakukan dengan memeriksa field top, jika top bernilai 0 atau top bernilai -1, maka berarti dalam keadaan empty. 7. Isfull : Operasi ini untuk memeriksa keadaan stack apakah sudah penuh/belum. Operasi ini memberikan nilai true(1) jika field top sama dengan field maks_elemen. - Deklarasi Stack - Inisialisasi Stack - Fungsi IsEmpty - Fungsi IsFull 2.4 Kelebihan dan Kekurangan Stack Kelebihan stack yaitu penambahan dan penghapusan data dapat dilakukan dengan cepat, yaitu selama memori masih tersedia penambahan data bisa terus dilakukan. Dengan demikian tidak ada kekuatiran terjadinya stack overflow. Kekurangan stack yaitu setiap sel tidak hanya menyimpan value saja, melainkan juga pointer ke sel berikutnya. Hal ini menyebabkan implementasi stack memakai linked list akan memerlukan memori yang lebih banyak daripada di implementasikan dengan array. Setiap halaman pada linked list hanya bisa di akses dengan cara sekuensial, sehingga lambat. 2.5 Contoh Codingan Stack pada JAVA Hasil dari output program : Penjelasan : Digunakan beberapa metode pada java.uti.stack yang bisa diakses secara public seperti push(), empty(),search(), peek(), dan pop(). Method Push() digunakan untuk menambahkan elemen pada stack. Method Peek() digunakan untuk menghasilkan elemen pada top stack, tetapi tidak me-remove. Method empty() digunakan untuk memeriksa kosong atau tidaknya stack, akan bernilai True jika stack kosong dan akan bernilai False jika stack berisi elemen. Method Search() digunakan untuk mencari elemen dalam stack, jika ditemukan akan menghasilkan offset dari top stack dan sebaliknya jika tidak menemukan elemen akan menghasilkan nilai -1. Dan yang terakhir method Pop() yang digunakan untuk menghasilkan elemen pada top stack, dan mengambil atau menghapus (remove) elemen tersebut. Pada program diatas praktikkan memasukkan elemen s.push(“java”), s.push(“source”), dan s.push(“and”). Setelah itu akan digunakan method s.peek yang berguna untuk menampilkan elemen yang terakhir dimasukkan/top yaitu “and”. Kemudian praktikkan memasukkan elemen lagi dengan nama s.push(“support”) dan selanjutnya digunakan method s.pop untuk menghasilkan elemen pada top stack, dan mengambil atau menghapus (remove) elemen tersebut yaitu elemen “support” yang posisinya diatas karena elemen tersebut adalah elemen yang terakhir dimasukkan. Kemudian ditambah elemen lagi s.push(“.”), yang kemudian akan digunakan method s.search untuk mencari elemen “java”. S etelah itu akan dilakukan perulangan dengan while untuk mengosongkan stack tersebut dengan method s.pop dan langkah terakhir digunakan method s.empty untuk memeriksa apakah stack tersebut kosong atau tidak. BAB III PENUTUP 3.1 Kesimpulan 1. Stack adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO. 2. Benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. 3. Stack dapat direpresentasikan dengan menggunakan array atau juga data menggunakan linked list. 4. Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah Push dan Pop. 3.2 Saran Penulis menyadari bahwa makalah diatas banyak sekali kesalahan dan jauh dari kesempurnaan. Penulis akan memperbaiki makalah tersebut dengan berpedoman pada banyak sumber yang dapat dipertanggungjawabkan. Maka dari itu penulis mengharapkan kritik dan saran mengenai pembahasan makalah dalam kesimpulan di atas. DAFTAR PUSTAKA 1. Annisa Puspa Kirana, S.Kom, M.Kom. 2017. Modul Praktikum Algoritma dan Struktur Data. Malang : Universitas Negeri Malang. 2. Pandaa, niia. 2010. Stack Dalam Data,http://niiapanpan.blogspot.co.id/2013/05/stack-dalam-struktur-data.html, pada tanggal 13 April 2017, pukul 21.00. Struktur diakses