praktikum 4 implementasi 4 implementasi 4 implementasi stack

advertisement
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
Download