MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA) PRAKTIKUM PRAKTIKUM 4 IMPLEMENTASI STACK TUJUAN PEMBELAJARAN: 1. Mengimplementasikan struktur data Stack menggunakan array. 2. Mampu mengimplementasikan struktur data Stack dengan Linked List 3. Mampu memanfaatkan struktur data Stack untuk menyelesaikan permasalahan. PENGANTAR: Stack Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai pertama yang keluar” (Last In Fisrt Out/FIFO). Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data. Stack(tumpukan) adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO. Elemen terakhir yang disimpan dalam stack menjadi elemen pertama yang diambil. Dalam proses komputasi, untuk meletakkan sebuah elemen pada bagian atas stack disebut dengan push. Dan untuk memindahkan dari tempat teratas tersebut, kita melakukan pop.Dalam praktikum ini, kita akan membahas beberapa model implementasi struktur data list dengan menggunalan array dan linked list. Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu : 1. 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. Implementasi Stack dengan Array Struktur data stack dapat diimplementasikan dengan menggunakan sebuah array dan variabel tos (topOfStack) bertipe integer untuk menyimpan index dari nilai tos (antara stack dan variabel tos nya terpisah). Untuk stack kosong dapat dikenali apabila nilai tos = -1. Berikut operasi-operasi pada implementasi stack dengan array yang harus ada: • • • void push(T x) void pop() boolean isEmpty() Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 1 MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA) • • • • void makeEmpty() T top() T topAndPop() void doubleArray() LANGKAH PERCOBAAN 1: Langkah 1 : Definisikan langkah-langkah yang harus dikerjakan dalam setiap operasi yang tersebut diatas. Langkah 2: Mengkonversi kedalam coding untuk setiap operasinya pada kelas stack_array.java. public class stack_array<T> { private T[] array;// tipe elemen stack private int tos;//untuk menyimpan nilai topOfStack private static final int DEFAULT_CAPACITY = 10;//length daripada stack public stack_array() {...}//konstruktor untuk menciptakan stack public boolean isEmpty() {...}//memeriksa apakah stack kosong public void makeEmpty() {...}//mengosongkan isi stack public T top() {...}//mengembalikan nilai tos public void pop() {...}//mengambil 1 elemen dari stack public T topAndPop() {...}//kombinasi top dan pop public void push(T x) {...}//menambah 1 elemen ke dalam stack private void doubleArray() {...}//mendobel-kan array, jika stack penuh } Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong). Langkah 3: Simpan implementasi stack yang anda buat dengan nama stack_array.java Langkah 4: Buat class test untuk menguji implementasi stack yang anda buat. Implementasi Stack dengan Linked List Struktur data stack dapat juga diimplementasikan dengan menggunakan linked list. variabel tos (topOfStack) bertipe reference objek untuk menunjuk node yang paling terakhir kali ditambahkan ke dalam stack. Untuk stack kosong dapat dikenali apabila nilai tos = null. Berikut operasi-operasi pada implementasi stack dengan linked list yang harus ada: • • • void push(T x) void pop() boolean isEmpty() Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 2 MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA) • • • void makeEmpty() T top() T topAndPop() Gambar 1. Ilustrasi Implementasi Stack dengan Linked List Dalam gambar1 di atas, terlihat bahwa ada 4 buah buah data. Setiap data mempunyai anggota yang menunjuk ke data berikutnya, kecuali elemen ele yang paling depan menunjuk ke NULL. NULL berarti bahwa elemen tersebut tidak menunjuk ke posisi po i apapun. Elemen yang terakhir ditambahkan ditunjuk oleh variable tos (topOfStack). Setiap elemen dari stack mempunyai memp 2 bagian yaitu bagian data yangg bernilai dengan data, dan sebagian lagi adalah penunjuk penu ke data berikutnya (next). LANGKAH PERCOBAAN 2: Langkah 1 : Definisikan efinisikan langkah-langkah langkah yang harus dikerjakan an dalam setiap operasi yang tersebut diatas. Langkah 2: Mengkonversi konversi kedalam coding untuk setiap operasinya pada kelas stack_linkedlist.java. class ListNode<T> { // Data member private Object data; //menyimpan menyimpan data stack private ListNode next; // Reference ke node berikutnya // Konstruktor, , nextNode di set null ListNode(Object d, ListNode nextNode) ne {... } } public class stack_linkedli _linkedlist<T> { private e ListNode<T> tos;//menyimpan t nilai topOfStack public stack_linkedlist stack_linkedlist() {...}//konstruktor public boolean isEmpty() {...}//memeriksa //memeriksa apakah stack kosong public void makeEmpty() {...}//mengosongkan isi stack Abdul Aziz, Jurusan Informatika rmatika FMIPA UNS 2012 201 3 MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA) public public public public T top() {...}//mengembalikan nilai elemen topOfStack void pop() {...}//mengambil 1 elemen dari stack T topAndPop() {...}//kombinasi top dan pop void push(T x) {...}//menambah 1 elemen ke dalam stack } Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong) sesuai dengan definisi sebelumnya. Langkah 3: Simpan implementasi stack yang anda buat dengan nama stack_linkedlist.java Langkah 4: Buat class test untuk menguji implementasi stack yang anda buat. SOAL POST TEST: Buatlah program dengan memanfaatkan struktur data stack untuk melakukan pembalikan kalimat. Contoh: Input : struktur data Hasil Setelah dibalik : atad rutkurts LAPORAN PRAKTIKUM BERISI PEMBAHASAN LATIHAN PERCOBAAN DAN SOAL. DIKUMPULKAN MINGGU DEPAN. Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 4