Praktikum 7 Linked List (bagian 2)
MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2) Deskripsi Singkat Struktur data linked list telah kita pelajari pada praktikum sebelumnya. Praktikum ini akan memanfaatkan linked list sebagai tempat penyimpanan pada stack dan queue.
Tujuan 1. Menggunakan linked list pada program stack 2. Menggunakan linked list pada program queue 3. Membuat sorted list
Materi 1 : Stack Menggunakan Linked List Stack yang menggunakan linked list memiliki sifat lebih flexible dari segi ukuran penyimpanan. Sebab stack tersebut menjadi tidak ada batasan ukuran berapa maksimal data yang bisa disimpan dalam stack. Namun konsep stack tetap ada yaitu Last In First Out (LIFO). Inti dari stack yang menggunakan linked list adalah:
Method push() akan menggunakan insertAwal pada linked list Method pop() akan menggunakan deleteAwal pada linked list
Ilustrasi dari proses stack dengan menggunakan linked list seperti gambar di bawah.
Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
Pada kode program StackList berikut ini akan menggunakan linear single linked list.
public class StackList { private SinglyLinkedList theStack; public StackList() { theStack = new SinglyLinkedList(); } public void push(int nilai) { theStack.insertAwal(nilai); } public void pop() { theStack.deleteAwal(); } public boolean isEmpty() { return theStack.isEmpty(); } Viska Mutiawani, M.IT, .IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
public void displayStack() { theStack.display(); } public static void main(String[] ar) { StackList sl = new StackList(); sl.push(10); sl.push(20); sl.push(30); sl.push(40); sl.displayStack(); sl.pop(); sl.displayStack(); sl.pop(); sl.displayStack(); } } Apakah output dari program di atas? Bagaimana tampilan hasilnya sesudah proses push dan pop?
Materi 2 : Queue Menggunakan Linked List Queue yang menggunakan linked list memiliki sifat lebih flexible dari segi ukuran penyimpanan. Sebab queue tersebut menjadi tidak ada batasan ukuran berapa maksimal data yang bisa disimpan dalam queue. Namun konsep queue tetap harus ada yaitu First In First Out (FIFO). Maknanya terdapat dua pintu pada queue yaitu pintu masuk dan pintu keluar. Implimentasi linked list pada queue sangatlah sederhana. Terdapat dua cara mengimplementasikan inti dari queue dengan linked list: 1. Method insert() akan menggunakan insertAwal dan method remove() akan menggunakan deleteAkhir pada linked list. 2. Method insert() akan menggunakan insertAkhir dan method remove() akan menggunakan deleteAwal pada linked list.
Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
Ilustrasi dari proses queue dengan menggunakan linked list seperti gambar di bawah.
3
5
queue awal ada 1 data
10
5
tambah 1 data
7
10
5
tambah 1 data
7
10
5
tambah 1 data
3
7
10
hapus 1 data
3
7
hapus 1 data
Pada kode program QueueList berikut ini akan menggunakan linear single linked list.
public class QueueList { private SinglyLinkedList theQueue; public QueueList() { theQueue = new SinglyLinkedList(); } public void insert(int nilai) { theQueue.insertAwal(nilai); } public void remove() { theQueue.deleteAkhir(); } public boolean isEmpty() { return theQueue.isEmpty(); } public void displayStack() { theQueue.display(); Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
} public static void main(String[] ar) { QueueList sl = new QueueList(); sl.insert(10); sl.insert(20); sl.insert(30); sl.insert(40); sl.displayStack(); sl.remove(); sl.displayStack(); sl.remove(); sl.displayStack(); } } Apakah output dari program di atas? Bagaimana tampilan hasilnya sesudah proses insert dan remove?
Materi 3 : Sorted List Sorted list merupakan linked list dalam kondisi terurut. Proses insert akan memastikan posisi data node yang baru berada di posisinya sehingga linked list tetap dalam kondisi terurut. Sebelumnya kita buat dulu nodenya seperti kode program di bawah. public class Link { public double dData; // data item public Link next; // next link in list public Link(double dd) // constructor { dData = dd; } public void displayLink() // display this link { System.out.print(dData + " "); } } Kemudian kita buat class sorted list seperti kode program di bawah. public class SortedList { private Link first; // ref to first item on list Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
// constructor public SortedList() { first = null; } // true if no links public boolean isEmpty() { return (first==null); } // insert in order public void insert(double key) { Link newLink = new Link(key); // make new link Link previous = null; // start at first Link current = first; // until end of list, while(current != null && key > current.dData) { // or key > current, previous = current; current = current.next; // go to next item } if(previous==null) // at beginning of list first = newLink; // first --> newLink else // not at beginning previous.next = newLink; // old prev --> newLink newLink.next = current; // newLink --> old currnt } // end insert() // return & delete first link public Link remove() { // (assumes non-empty list) Link temp = first; // save first first = first.next; // delete first return temp; // return value } public void displayList() { System.out.print("List (first-->last): "); Link current = first; // start at beginning of list while(current != null) // until end of list, { current.displayLink(); // print data Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala
Praktikum 7 Linked List (bagian 2)
current = current.next; // move to next link } System.out.println(""); } public static void main(String[] args) { // create new list SortedList theSortedList = new SortedList(); theSortedList.insert(20); // insert 2 items theSortedList.insert(40); theSortedList.displayList(); // display list theSortedList.insert(10); // insert 3 more items theSortedList.insert(30); theSortedList.insert(50); theSortedList.displayList(); // display list theSortedList.remove(); // remove an item theSortedList.displayList(); // display list } // end main() } Apakah output dari program di atas? Bagaimana tampilan hasilnya sesudah proses insert dan remove?
LATIHAN 1 Buat semua class-class yang ada dalam praktikum ini. Apakah yang dapat anda simpulkan?
SOAL-SOAL 1.
Viska Mutiawani, M.IT, Irvanizam, M.Sc, Dr. Taufik Fuadi Abidin Jurusan Informatika Universitas Syiah Kuala