Anda di halaman 1dari 10

PRAKTIKUM 4B - STRUKTUR DATA

LINKED LIST

Learning outcomes:
1. Mampu menjelaskan empat macam linked list yaitu linier singly-linked list,
linier doubly-linked list, circular singly-linked list, dan circular doubly-linked
list.
2. Mampu mengimplementasikan singly-linked list
3. Mampu mengimplementasikan doubly-linked list
4. Mampu mengimplementasikan Stacks pada struktur data linked list
5. Mampu mengimplementasikan Queues pada struktur data linked list

IDENTITAS PRAKTIKAN
NIM : 2101020030
Nama Lengkap : DWI RANA
Kelas/ Hari/ Jam :TI A/ KAMIS/13.50-15.30
Nomor komputer :
Nama Asisten :

Tugas Praktikum

Telah diperiksa pada tanggal Telah diperiksa pada tanggal

(nilai dan paraf asisten) (nilai dan paraf asisten)


Praktikum 4 | Linked List

7. Berikut ini listing program yang menunjukkan implementasi doubly-linked list.

class Link {

public int Data;

public Link next;

public Link previous;

public Link(int Data) {

this.Data = Data;

public void displayLink() {

System.out.print(Data + " ");

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 2
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

class DoublyLinkedList {

private Link first;


Membuat class dengan nama DoublyLinkedList
private Link last;
Membuat sebuah prosedur dengan akses private
setiap variable

public DoublyLinkedList() { Membuat sebuah contructor dan


menginisiasikan nilai variable
first = null;

last = null;

public boolean isEmpty() {


Mengecek kondisi pada variable, apakah nilai
return first == null; pada variable kosong atau tidak

} Mengembalikan nilai Boolean

public void insertFirst(int Data) { Membuat method untuk menyispkan data


dengan diikuti nama objek
Link newLink = new Link(Data);
Membuat objek baru dengan nama link
if (isEmpty()) {
Melakukan pengecekan pada method isEmpty
last = newLink; Jika true maka disisipkan ke data terakhir

} else { Jika False maka akan Kembali ke data


sebelumnya
first.previous = newLink;

newLink.next = first;

first = newLink;

}
public void insertLast(int Data) { Method untuk menyisipkan data terakhir

Link newLink = new Link(Data);

if (isEmpty()) { Membuat objek baru dengan nama link

first = newLink;

} else { Melakukan pengecekan pada method isEmpty


Jika true maka disisipkan ke data terakhir
last.next = newLink;
Jika False maka akan Kembali ke
newLink.previous = last; data sebelumnya

last = newLink;

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 3
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

public Link deleteFirst() { Method untuk menghapus elemen array yang


berada pada baris awal
Link temp = first;
Melakukan pengecekan kondisi True dan False
if (first.next == null) {

last = null;

} else {

first.next.previous = null;

}
Memanggil variable next untuk melanjutkan ke
first = first.next; data selanjutnya
Kemudian data akan disimpan di temp
return temp;

public Link deleteLast() { Method untuk menghapus elemen yang berada


di baris akhir
Link temp = last;

if (first.next == null) { Melakukan pengecekan kondisi dan


menginisiasikan nilai setiap variable
first = null;

} else {

last.previous.next = null;

}
Memanggil variable previous untuk kembali ke
last = last.previous; data sebelumnya
Kemudian data akan disimpan di temp
return temp;

public boolean insertAfter(int key, Method untuk menyisipkan elemen array yang
berada di tengah
int Data) {

Link current = first; Melakukan pengecekan kondisi dengan


perulangan while
while (current.Data != key) {

current = current.next;

if (current == null) {

return false;

}
Membuat objek baru dengan nama Link dan
Link newLink = new Link(Data); memanggil method

if (current == last) {

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 4
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

newLink.next = null;

last = newLink;

} else {

newLink.next = current.next;

current.next.previous = newLink;

newLink.previous = current;

current.next = newLink;

return true;

}
public Link deleteKey(int key) {

Link current = first;

while (current.Data != key) {


Method yang digunakan unuk mendelete atau
current = current.next; menghapus elemen sebuah elemen array

if (current == null) {

return null;

}
Membuat perkondisian if else
if (current == first) {

first =

current.next;

} else {

current.previous.next =

current.next;

if (current == last) {

last = current.previous;

} else {

current.next.previous =

current.previous;

return current;

}
public void displayForward() { Method untuk menampilkan elemen dari list
pertama sampai terakhir
System.out.print("List ”

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 5
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

+ “(first-->last): ");

Link current = first;

while (current != null) {

current.displayLink();

current = current.next;

System.out.println("");

public void displayBackward() { Method untuk menampilkan elemen secara


reverse
System.out.print("List ”

+ “(last-->first): ");

Link current = last;

while (current != null) {

current.displayLink();

current = current.previous;

System.out.println("");

} // akhir class

public class DoublyLinkedListApp {


Tuliskan output program ini:
public static void main(String[] args) {

DoublyLinkedList theList =

new DoublyLinkedList();

theList.insertFirst(22);

theList.insertFirst(44);

theList.insertFirst(66);

theList.displayForward();

theList.insertLast(11);

theList.insertLast(33);

theList.insertLast(55);

theList.displayForward();

theList.displayBackward();

theList.deleteFirst();

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 6
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

theList.displayForward();

theList.deleteLast();

theList.displayForward();

theList.deleteKey(11);

theList.displayForward();

theList.insertAfter(22, 77);

theList.insertAfter(33, 88);

theList.displayForward();

8. Dari penjelasan tiap bagian yang Anda tuliskan pada nomor 7, tuliskan kesimpulan
logika yang digunakan pada tiap method: insertFirst(), insertLast(),
insertAfter(), deleteFirst(), deleteLast(), deleteKey()!
Jawab :
InsertFirst() ialah method untuk menyisipkan elemen pada baris pertama
InsertLast() ialah method untuk menyisipkan elemen pada baris terakhir
InsertAfter() ialah method untuk menyipkan elemen pada setelah node atau link
DeleteLast() ialah method untuk menghapus elemen pada baris terakhir
DeleteKey() ialah method untuk menghapus link atau node

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 7
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

B. PRAKTIKUM

7. Implementasi Stack pada Linked List


Pada modul 3, Stacks telah dibahas beserta implementasinya pada struktur data
Array. Pada praktikum kali ini, buatlah program yang mengimplementasikan Stack
menggunakan struktur data Linked list dengan ketentuan:
- Data yang disimpan adalah record barang elektronik yang memiliki field id
bertipe integer dan nama barang bertipe String.
- Lakukan push, pop, dan display stack pada program

Gambar 4.1 Contoh output program Stack pada Linked list

8. Implementasi Queue pada Linked List


Sebagaimana soal praktikum nomer 1, buatlah program yang mengimplementasikan
Queue menggunakan struktur data Linked list dengan ketentuan:
- data yang disimpan adalah data mahasiswa (nim dan nama) yang melakukan
antrian
- Lakukan insert, remove, dan display queue pada program!

Gambar 4.2 Contoh output program Queue pada Linked list

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 8
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 4 | Linked List

C. KESIMPULAN
Kesimpulan yang diperoleh dari pembahasan praktikum kali ini adalah:
7. Tentang perbandingan 4 macam struktur linked list, yaitu linier singly-
linked list,linier doubly-linked list, circular singly-linked list, dan circular-
doubly linked list.
Jawab :
1. Single Linked List merupakan suatu linked list yang hanya memiliki satu varuabel pointer saja.
Dimana pointer tersebut menunjuk ke node selanjutnya.Biasanya field pada tail menunjuk ke
NULL
2. Double Linked List Merupakan suatau linked list yang memiliki dua variabel pointer yaitu
pointer yang menunjuk ke node selanjutnya dan pointer yang menunuk ke node sebelumnya.
Setiap head dan tailnya juga menunjuk ke NULL
3. Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke
head(node pertama).Jadi tidak ada pointer yang menunjuk NULL ada 2 jenis Circular Linked
List
4.
Multi Linked List Merupakan Suatu Linked List yang Memiliki Lebih dari 2 buat variabel
pointer

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 9
Semester Genap, Tahun Ajaran 2020/2021
Praktikum 10 | Graphs

Praktikum Struktur Data, Program Studi Teknologi Informasi, Universitas


Bumigora 10
Semester Genap, Tahun Ajaran 2020/2021

Anda mungkin juga menyukai