STRUKTUR DATA
MODUL KE -2
Disusun Oleh:
Nama : Muhammad Naveed Sharaheel
NPM : 2320506040
Kelas :3
B. Dasar Teori
Linked list adalah struktur data linier dimana data disimpan dan dihubungkan dengan
node. Linked list berbentuk rangkaian yang dimana setiap node berisi data dan alamat ke
node selanjutnya. Contohnya seperti gambar berikut:
Sumber : https://www.freecodecamp.org/news/how-linked-lists-work/
Node pertama dalam linked list disebut head dan node terakhir disebut tail. Ada beberapa
macam tipe linked list :
1. Single-linked list
Setiap node memiliki data dan alamat ke node selanjutnya, single linked list akan
selalu mengarah lurus kedepan.
2. Double-linked list
Di dalam double linked list, node tidak hanya berisi alamat ke node selanjutnya
tetapi juga alamat ke node sebelumnya. Hal ini memungkinkan arah lintasan maju
dan mundur, tetapi hal ini akan memerlukan memori lebih banyak karena node harus
menyimpan 2 alamat, node selanjutnya dan sebelumnya.
3. Circular linked list
Circular bisa juga disebut looping, artinya node terakhir akan memiliki alamat
menuju head.
Sumber : https://www.faceprep.in/procoder/knowledgebase/linked-list-introduction/
Dengan class node, dengan mengguanakan dataval dan nextval maka nantinya
node bisa dihubungkan (link), yang dimana class linkedlist.
Dengan class LinkedList maka head dapat ditentukan, sehingga node n1 yang akan
sebagai head dapat dihubungkan dengan node n2 variabel sui‒yang merupakan class
LinkedList dengan cara sui.headval.nextval=n2, begitu juga dengan n2 dihubungkan
dengan n3 dengan cara sui.nextval=n3.
2. Menelusuri linked list
Salah satu cara untuk menelusuri linked list adalah dengan mencetak seluruh node
menggunakan fungsi listprint(). Berikut adalah kode program fungsi listprint()
Pada baris 10 listprint() didefinisikan, lalu pada baris 11 head akan dipanggil
mengguanakan variabel printval dan pada baris 12 sampai baris 14 adalah kode
looping agar node dapat dicetak. Berikut adalah hasil dari cetakan fungsi listprint()
ketikan telah diberikan data pada masing-masing node
Dapat dilihat bahwa elemen December telah berhasil ditambahkan di awal dari
list.
2. Penyisipan node di tengah
Penyisipan node ditengah tengah dapat dilakukan dengan mengganti nilai node
nextval node baru dengan nilai nextval setelahnya dan mengganti nilai nextval
node sebelumnya dengan node yang baru. Berikut adalah kode program yang
sudah penulis buat
Pada baris 15 definisi AddInBetween() dibuat dalam class LinkedList(). Lalu
pada baris 16 sampai 18 adalah kode ketika nilai AddInBetween() kosong. Pada
baris 20 nodebaru.nextval diganti dengan variabel newdata yang akan diinput
menjadi “hehe” seperti pada baris 32, dan pada baris 21 adalah kode yang akan
menjadi alamat bagi node sebelumnya. Berikut adalah hasil dari kode program
tersebut
4. Penghapusan node
1. Menghapus node dengan kata kunci
Pada baris 23 definisi RemoveNode() dibuat dalam class LinkedList(). Pada baris
25, ketika head tidak kosong maka dataval yang sama dengan variable hapus yang
akan diisi December seperti pada baris 47 akan dihapus atau di kosongkan, dan
pada baris 30 sampai baris 32 berguna untuk mencari node mana saja yang
bernilai sama dengan veriabel hapus dan ketika sudah tidak ada variabel yang
sama maka dungsi akan berhenti, berikut adalah hasil dari kode program tersebut
D. Latihan
1. Buatlah double linked list dengan 3 node didalamnya, kemudian lakukan penyisipan tengah
dan hapus dengan kata kunci !
Pertama membuat class node
Disini ada tambahan self.prevval yang akan berfungsi untuk menghubungkan node ke
alamat sebelumnya.
Lalu membuat class DoubleLinkedList seperti sebelumnya dengan tambahan self.tailval
yang dimana kode tersebut berguna untuk menentukan node terakhir.
Pada baris 12 definisi AddInEnd ditambahkan untuk menambahkan elemen pada bagian
akhir linkedlist. Pada baris 14 jika bukan head maka head dan tail adalah node baru. Selainnya
(baris 17-20) nilai selanjutnya dari tail adalah node baru (baris 19) dan tail yang baru adalah
node baru (baris 20).
Pada baris 22 sampai baris 27 berguna untuk mencetak linkedlist seperti yang sudah
dijelaskan penulis.
Barisan kode program diatas adalah definisi untuk menyisipkan node baru ditengah dalam
linked list. Pada baris 33 sampai baris 40 adalah loop while yang berguna untuk menambah
kan node baru diantara node-node lainnya. ketika node baru diimputkan di variabel nengah
(baris 34) maka nodebaru akan memiliki alamat sebelumnya dengan nilai n dan alamat
setelahnya (baris 35 dan 36), untuk alamat sebelumnya dari node setelah nodebaru akan diganti
dengan node baru (baris 37 dan 38).
Pada baris 44 sampai node 62 definisi dibuat untuk menghapus node dengan kata kunci.
Jika nilai node sama dengan kata kunci (baris 48) maka alamat node sebelumnya diganti
dengan alamat node setelah node yang ingin dihapus (baris 49-55). Lalu n dihapus (baris 59).
Barisan-barisan kode tersebut berfungsi untuk menberikan output sebelum dan sesudah
node dengan katakunci “wokwokwok” dihapus. Berikut adalah output daro kode program
tersebut
2. Buatlah circular linked list dengan 3 node didalamnya, kemudian lakukan penyisipan akhir dan
hapus akhir !
Membuat class node dan class circular linked list sama dengan singular-linked list.
Jika bukan head maka head adalah node baru (baris 13 dan 14), dan alamat selanjutnya dari
node baru adalah head. Pada baris 16 sampai baris 21, ketika n.nextval tidak sama dengan head
maka n.nextval (baris 18 dan 19), lalu n.nextval adalah node baru (baris 20) dan terakhir adalah
nextval dari node baru adalah head (baris 21).
Baris 37 sampai 39 berguna jika tidak ada elemen didalam list. Pada baris 41 sampai 44
berguna ketika hanya ada 1 node. Ketika n.nextval.nextval tidak sama dengan head, maka n
adalah n.nexval, lalu hapus n.nextval. n.nextval adalah head-nya.
Barisan-barisan kode berikut adalah kode untuk memberikan output untuk menyisipkan
node diakhir lalu menghapus node diakhir
Berikut adalah hasil dari kode program berikut
E. Kesimpulan
Linked list adalah struktur data yang reliable, dikarenakan kedinamisan dan
kemudahan dalam menambahkan dan menghapus data. Dengan mempelajari linked
list, Mahasiswa dapat mengimplementasikan dengan berbagai persoalan. Seperti dalam
music player dimana user dapat memilih untuk terus melanjutkan lagu berikutnya atau
kembali ke lagu sebelumnya.
Daftar pustaka:
Understanding the basics of Linked List. Link: https://www.geeksforgeeks.org/what-is-
linked-list/