Anda di halaman 1dari 15

LAPORAN PRAKTIKUM

STRUKTUR DATA
MODUL KE -2

LINKED LIST DALAM PYTHON

Disusun Oleh:
Nama : Muhammad Naveed Sharaheel
NPM : 2320506040
Kelas :3

Program Studi S1 Teknologi Informasi


Fakultas Teknik, Universitas Tidar
Genap 2024/2025
A. Tujuan Praktikum
1. Mahasiswa dapat menggunakan linked list dalam python.
2. Mahasiswa mampu menerapkan konsep Linked List pada bahasa pemrograman python.
3. Mahasiswa dapat menerapkan Linkedlist untuk melakukan pemograman

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/

C. Hasil dan Pembahasan


Setelah melakukan praktikum penulis memberikan penjelasan sebagai berikut
1. Membuat linked list
Membuat nodenya terlebih dahulu dengan menggunakan class node seperti pada
kode dibawah ini

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

3. Penyisipan linked list


Dikarenakan linked list menggunakan node yang berisikan alamat ke node
selanjutnya maka akan dapat dengan mudah menyisipkan data.
1. Penyisipan node diawal
Pada baris 17 definisi AddBegining() ditambahkan pada class LinkedList(). Pada
baris 18 nodebaru dapat dimasukkan di awal dengan cara headval diganti dengan
nodebaru. Berikut adalah hasil dari kode program setelah disisipkan node baru
dengan kata kunci December

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

Elemen “hehe” disisipkan setelah elemen “February” dikarenakan pada baris 32


elemen “hehe” akan disisipkan setelah node n2.
3. Penyisipan node di akhir
Penyisipan node terakhir dapat dilakukan dengan cara mengganti nilai alamat
selanjutnya pada node terakhir dengan alamat node baru.
Pada baris 15 definisi AddInEnd dibuat di class LinkedList. Pada baris 17 dan 18
ketika head nya kosong maka head akan diganti dengan nodebaru. Pada abaris 20
dan 21 kode looping dilakukan untuk mencari node terakhir. 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

2. Menghapus node paling awal


Menghapus nilai node awal hanya perlu menghapus head dari linked list dan
mengganti node selanjutnya menjadi head. Dimana kode tersebut diketik pada
baris 20 sampai baris 22. Berikut adalah hasil dari kode program tersebut

3. Menghapus node paling akhir


Menghapus node terakhir dapat dilakukan dengan mencari node terakhir
menggunakan loop while (baris 23-25) lalu diganti dengan node sebelumnya
(baris 28-31). 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.

Berikutnya membuat definisi AddInEnd didalam class CircularLinkedList

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).

Berikutnya membuat definisi printlist yang masih sama seperti sebelumnya


Selanjutnya adalah membuat definisi terakhir yang berguna untuk menghapus node terakhir

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/

Anda mungkin juga menyukai