praktikum 3 implementasi list 3 implementasi list 3

advertisement
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
PRAKTIKUM
PRAKTIKUM 3 IMPLEMENTASI LIST
TUJUAN PEMBELAJARAN:
1. Mengimplementasikan struktur data LIST menggunakan array.
2. Menggunakan interface untuk mendefinisikan sekumpulan method generik dan
dapat diimplementasikan oleh struktur data LIST.
3. Mampu mengimplementasikan struktur data list dengan single atau double linked
list.
PENGANTAR:
List
List merupakan sekumpulan elemen list yang bertype sama. Elemen list memiliki
keterurutan tertentu (elemen ke..., ada pengertian suksesor dan predesesor). Setiap
elemen(node) di dalam list memiliki elemen(node) suksesor(penerus) kecuali elemen
terakhir, dan setiap elemen list memiliki predesesor(pendahulu) kecuali elemen pertama.
Terdapat 2 jenis list yakni single list dan double list. Pengertian list diatas merupakan single
list, Adapun double list merupakan list yang setiap node-nya memiliki predesesor dan
suksesor.
Dalam praktikum ini, kita akan membahas beberapa model implementasi struktur data list
dengan menggunalan array dan linked list.
Implementasi Array List
Array memiliki batasan kapasitas. Salah satu karakteristik penting tipe array di java adalah
bahwa ukuran array dapat diketahui dari pemanggilan data member length. Tidak seperti
method length pada class String, length pada array merupakan data member, bukan
sebuah method, sehingga tidak membutuhkan kurung kurawal untuk memanggilnya.
Sebagai contoh, berikut deklarasi array:
int scores = new int[10];
Setelah deklarasi diatas, nilai dari scores.length adalah 10. Perlu diketahui bahwa
meskipun length bersifat public, nilainya tidak bisa diubah karena dideklarasikan sebagai
konstan/final. Nilai valid untuk index array mulai dari 0 sampai dengan panjang array
dikurangi satu.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
1
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
Java secara aman menangani references invalid daripada index array. Percobaan untuk
mengakses invalid index array akan menyebabkan program berhenti dengan eksepsi
ArrayIndexOutOfBoundsException.
Struktur data LIST memiliki sejumlah method yang harus dimiliki pada saat implementasi. Di
java, salah satu pendekatan untuk mengidentifikasi common method yang dapat digunakan
oleh bervariasi implementasi list adalah interface. Definisi sebuah interface hampir mirip
dengan definisi class, tetapi:
•
•
•
•
•
Interface tidak dapat memiliki data member.
Interface dapat memiliki konstan dan method public static final.
Semua method otomatis abstrak, dan tidak memiliki bodi method.
Semua method otomatis public.
Interface tidak dapat diinstansiasi menjadi objek.
Berikut contoh common method yang ada pada interface list.java
interface List // Constants & Methods common to List ADTs
{
// Default maximum list size - a constant
public static final int DEF_MAX_LIST_SIZE = 10;
// List manipulation operations
public void insert(Object newElement); // Insert Object
public void remove( ); // Remove element at cursor
public void replace (Object newElement); // Replace element
public void clear( ); // Remove all elements from list
// List status operations
public boolean isEmpty( ); // Returns true if list is empty
public boolean isFull( ); // Returns true if list is full
} // interface List
Setiap kelas yang mengimplementasikan List, diperlukan untuk menyediakan implementasi
publik untuk setiap metode yang tercantum dalam interface. Java compiler akan
menghasilkan kesalahan jika salah satu metode dalam interface tidak diberi definisi method.
LANGKAH PERCOBAAN 1:
Langkah 1 : Buat interface List (seperti di atas) dan simpan dalam file List.java dan kemudian
dicompile.
Langkah 2: Mengimplementasikan method yang terdapat pada interface List menggunakan
array untuk menyimpan elemen list. Anda perlu menyimpan jumlah aktual elemen dalam
list (size).
class ListArray implements List // Array based list class
{
// Data Member
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
2
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
private int size, // Jumlah elemen di dalam list
private Object [] element; // Tipe elemen Array
// Konstruktor
public ListArray( ) // Constructor: default size
{ }
public ListArray(int maxNumber) // Constructor: specific size
{ }
// Class methods
private void setUp (int maxNumber) // Called by constructors only
{ }
// ------ Insert method implementations for the interface list here -----//
} // class ListArray
Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang
diimplementasikan (kurung yang kosong), dan mengisi semua implementasi method yang
ada di interface LIST.
Langkah 2: Simpan implementasi list yang anda buat dengan nama ListArray.java
Langkah 3: Buat class test untuk menguji implementasi list yang anda buat.
Implementasi List dengan Single Linked List
Single Linked list atau biasa disebut senarai berantai adalah suatu kumpulan data
yang saling terhubung antar 1 data dengan data berikutnya. Suatu element
(disebut
dengan node) dalam linked list selalu mempunyai hubungan dengan data
berikutnya. Agar lebih jelas perhatikan contoh berikut:
Gambar 1. Contoh Single Linked List
Dalam gambar1 di atas, terlihat bahwa ada 4 buah data. Setiap data mempunyai anggota
yang menunjuk ke data berikutnya, kecuali elemen terakhir yang berisi NULL. NULL berarti
bahwa elemen tersebut tidak menunjuk ke posisi apapun. Selain itu elemen pertama
ditunjuk oleh variable Awal dan elemen terakhir ditunjuk oleh variable Akhir.
Setiap elemen dari single linked list mempunyai 2 bagian yaitu bagian info (data) yang
bernilai dengan angka, dan sebagian lagi adalah penunjuk ke data berikutnya (next).
Untuk mengakses elemen dalam single linked list, dimulai dari head(awal) dan
menggunakan field next dari elemen selanjutnya untuk berpindah dari elemen ke elemen
berikutnya sampai elemen yang diminta dicapai. Dengan single linked list, list dapat dilintasi
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
3
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
hanya satu arah dari head ke tail karena masing-masing elemen tidak terdapat link dengan
elemen sebelumnya.
LANGKAH PERCOBAAN 2:
Langkah 1: Implementasikan operasi-operasi yang ada di interface LIST dengan
menggunakan single linked list. Setiap node di dalam linked list harus memiliki elemen list
dan sebuah reference ke node yang memiliki elemen berikutnya dari list.
// Facilitator class for the SList class
class SListNode // A singly linked list node
{
// Data members
private Object element; // List element
private SListNode next; // Reference to the next element
// Constructor
SListNode(Object elem, SListNode nextPtr)
{ }
// Class Methods used by client class
SListNode getNext( ) // Return reference to next element
{ }
SListNode setNext( SListNode nextVal )
// Set reference to next element & return that reference
{ }
Object getElement( ) // Return the element in the current node
{ }
void setElement(Object newElem) // Set current element to newElem
{ }
}
// class SListNode
class SList implements List // Singly linked list implementation of the
// List ADT
{
// Data members
private SListNode head, // Reference to the beginning of the list
// Constructors & Helper Method
public SList( ) // Default constructor: Creates an empty list
{ }
public SList( int size ) // Constructor: Creates an empty list, size is
// ignored
{ }
// Class methods
private void setup( )
// Called by constructors only: Creates an empty list
{ }
//- Insert method definitions for the interface List here -//
} // class SList
Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang
diimplementasikan (kurung yang kosong), dan mengisi semua implementasi method yang
ada di interface LIST.
Langkah 2 : Simpan kode anda pada file SlistNode.java dan SList.java
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
4
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
Langkah 3 : Buat class test untuk menguji list yang anda buat.
SOAL POST TEST:
Implementasikan List dengan menggunakan Double Linked List, dimana setiap node-nya
memiliki suksesor(penerus/next) dan predesesor(pendahulu/prev).
LAPORAN PRAKTIKUM BERISI PEMBAHASAN LATIHAN PERCOBAAN DAN SOAL. DIKUMPULKAN MINGGU
DEPAN.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
5
Download