Anda di halaman 1dari 44

Singly Linked list

Kelompok II
Anggota Kelompok II
Aldina Nurul Z Ketua Agy Andhika Hady
Jobdesk Jobdesk
Penanggung Jawab Soal Pembaca Materi

Asep Nurhotam M Raafi Ibrahim


Jobdesk Jobdesk
Penanggung Jawab Soal Pembaca Materi
Anggota Kelompok II
Nelsen Maulana Riska Maulida
Jobdesk Jobdesk
Penanggung Jawab Soal Pembaca Materi

Silvi Widiasari Rafly Rachman


Jobdesk Jobdesk
Moderator Pembaca Materi
Definisi
Linked List
Linked List
Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node)
yang tersusun secara sekuensial, saling sambung menyambung, dinamis dan
terbatas.
• Linked List sering disebut juga Senarai Berantai.
• Linked List saling terhubung dengan bantuan variabel pointer.

• Masing-masing data dalam Linked List disebut dengan node (node) yang
menempati alokasi memori secara dinamis dan biasanya berupa struct yang
terdiri dari beberapa field.

Biasanya digunakan untuk membuat file system, adjacency list, dan hash table
node pertama dari linked list disebut sebagai head atau node kepala.
Apabila linked list berisi elemen kosong, maka nilai pointer dari head
menunjuk ke NULL. Begitu juga untuk pointer berikutnya dari node terakhir
atau node ekor akan menunjuk ke NULL.

Ukuran elemen dari linked list dapat bertambah secara dinamis dan mudah
untuk menyisipkan dan menghapus elemen karena tidak seperti array, kita
hanya perlu mengubah pointer elemen sebelumnya dan elemen berikutnya
untuk menyisipkan atau menghapus elemen.
Kelebihaan &
Kekurangan
Kelebihan Linked List
Struktur data Dinamis Tidak Boros Memori
Linked list adalah himpunan dinamis Dalam linked list, pemanfaatan memori yang efisien
sehingga dapat bertambah dan menyusut saat dapat dicapai karena ukuran linked list bertambah atau
runtime dengan mengalokasikan dan berkurang pada runtime sehingga tidak ada
membatalkan alokasi memori. pemborosan memori

Implementasi Operasi Insert & Delete


Struktur data linier seperti stack dan queue Operasi penyisipan dan penghapusan cukup mudah
seringkali mudah diimplementasikan dalam linked list. Kita tidak perlu menggeser
menggunakan linked list. elemen setelah operasi penyisipan atau penghapusan
elemen
Kekurangan Linked List
Penggunaan Memori Traversal
Linked list memerlukan lebih banyak memori Dalam traversal, linked list lebih banyak memakan
dibandingkan dengan array. Karena dalam linked waktu dibandingkan dengan array. Akses langsung ke
list, pointer juga perlu menyimpan alamat elemen elemen tidak bisa dilakukan pada linked list seperti
berikutnya dan membutuhkan memori tambahan array yang dapat akses elemen berdasarkan indeks.
untuk dirinya sendiri. Untuk mengakses sebuah node pada posisi n dari
linked list, kita harus melintasi semua node
Reverse Traversing sebelumnya.

Dalam single linked list, reverse traversing tidak


dimungkinkan, tetapi dalam kasus double-linked list, Akses Acak
ini dapat dimungkinkan karena berisi pointer ke Akses acak tidak bisa dilakukan dalam linked list
node yang terhubung sebelumnya dengan setiap karena alokasi memorinya yang dinamis.
node. Untuk melakukannya, diperlukan memori
tambahan untuk pointer sebelumnya sehingga ada
pemborosan memori.
Definisi
Singly Linked List
Singly Linked List
Singly Linked List adalah sebuah LINKED LIST yang menggunakan sebuah
variabel pointer Pesaja untuk menyimpan banyak data dengan metode LINKED
LIST, suatu daftar isi yang saling berhubungan. Single Linked List adalah
sekumpulan dari node yang saling terhubung dengan node lain melalui sebuah
pointer. Single Linked List hanya memiliki satu arah dan tidak memiliki dua
arah atau bulak balik, dua arah tersebut disebut dengan double linked list.
Penjelasan Operasi
INISIALISASI
Kita perlu membuat struktur dasar dari node yang akan digunakan dalam linked list. Setiap
node akan memiliki dua bagian utama :

DATA

None  

NEXT

 
Data : Bagian ini akan menyimpan nilai data yang akan disimpan dalam node.
Next : Bagian ini akan menunjukkan ke node berikutnya dalam linked list.
INSERT FIRST
Insert First adalah operasi untuk menyisipkan sebuah node baru di awal Linked List,
sehingga node baru tersebut menjadi head dari Linked List.
Langkah utama :

Membuat node baru dengan data yang diinginkan. Mengatur pointer node baru untuk
menunjuk ke node yang saat ini menjadi head, dan kemudian menjadikan node baru
sebagai head baru.

Keadaan Awal

HEAD 9 100 10 101 11   TAIL


01 02
Buat node baru misalkan disi dengan angka 8. Atur pointer node baru untuk menunjuk ke node
* New Node yang saat ini menjadi head
8  
HEAD 9 100 10 101 11   TAIL

*P

* New Node
03
HEAD 8 99 9 100 10 101 11   TAIL

Kemudian masukan node baru, lalu jadikan Head pada node


yang baru.
INSERT AFTER
Insert After adalah operasi untuk menyisipkan sebuah node baru setelah node tertentu dalam
Linked List. Proses ini melibatkan dua langkah utama :

1. Membuat node baru

2. Mengaturpointer node baru untuk menunjukkan ke node yang berada setelah node yang
dituju dan mengatur node sebelumnya untuk menunjukkan ke node baru.

Keadaan Awal

HEAD 8 100 10 101 11   TAIL


01 *P : Pointer
02
Kita disini mempunyai node baru 8 100 10 101 11   TAIL
HEAD
dan memiliki data 5.
*P
5  
Atur pointer node agar berada di node berdata 8 karena kita akan memasukan
node baru di setelah node berdata 8. apabila ingin memasukan di node berdata 10
pointer akan terus mencari node yang memiliki data yang dituju.

03
* New Node

HEAD 8 100 5 101 10 102 11   TAIL

Maka, sekarang node dengan data 5 telah berhasil dimasukkan lalu next pada
node berdata 5 menjadi next pada node berdata 10.
INSERT LAST
Insert Last adalah operasi untuk menyisipkan sebuah node baru di akhir Linked List,
sehingga node baru tersebut menjadi node terakhir atau Last. Proses ini melibatkan dua
langkah utama :

1. Membuat node baru

2.Mengaitkan node terakhir saat ini dengan node baru dengan menggunakan pointer

Keadaan Awal

HEAD 8 100 10 101 11   TAIL


01 02
Kita disini mempunyai node baru Atur pointer node agar berada di node berdata 11 atau last
dan memiliki data 12. karena kita akan memasukan node baru di setelah node
berdata 10.
12  
*P : Pointer

HEAD 8 10 10 101 11   TAIL

*P

03
Jika Pointer sudah berada pada Node yang dituju seperti di atas pointer sudah berada pada node
yang memiliki data 11, maka baru kita masukan Node baru yang sudah di buat seperti berikut :
* New Node
HEAD 8 100 10 101 11 102 12   TAIL
MENGAKSES DATA
Untuk mengakses Data Linked List harus menggunakan bantuan dari sebuah Pointer(*p).
Pointer ini berfungsi untuk mengecek data dari sebuah Node dengan metode Squensial

Contoh :

HEAD 8 99 9 100 10 101 11 102 12   TAIL

Untuk mengakses Node terakhir yang berisi data 12 maka kita harus
menggunakan bantuan sebuah pointer *p.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P
Pointer *p akan mulai mencari data dari Node pertama (Head). Jika Node pertama
bukan data yang di cari, maka pointer *p akan terus bergerak dan berhenti ketika
Data yang di cari ditemukan.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P
Pointer *p akan mulai mencari data dari Node pertama (Head). Jika Node pertama
bukan data yang di cari, maka pointer *p akan terus bergerak dan berhenti ketika
Data yang di cari ditemukan.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P
Pointer *p akan mulai mencari data dari Node pertama (Head). Jika Node pertama
bukan data yang di cari, maka pointer *p akan terus bergerak dan berhenti ketika
Data yang di cari ditemukan.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P
Pointer *p akan mulai mencari data dari Node pertama (Head). Jika Node pertama
bukan data yang di cari, maka pointer *p akan terus bergerak dan berhenti ketika
Data yang di cari ditemukan.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P
Pointer *p akan mulai mencari data dari Node pertama (Head). Jika Node pertama
bukan data yang di cari, maka pointer *p akan terus bergerak dan berhenti ketika
Data yang di cari ditemukan.

HEAD 8 99 9 100 10 101 11 102 12   TAIL

*P

Jika poninter *p telah menemukan Data yang kita cari maka Data tersebut
akan di Tampilkan.
DELETE FIRST
Delete First adalah operasi untuk menghapus node pertama dari Linked List.

Kondisi Awal :

HEAD 8 99 9 100 10 101 11   TAIL

Pertama kita membutuhkan sebuah pointer *Temp, pointer *Temp ini


berfungsi untuk menghapus sebuah Node. Dan *Temp ini kita letakan di
Head.
*Temp

HEAD 8 99 9 100 10 101 11   TAIL


Kemudian Head berpindah ke satu Node setelah *Temp.
*Temp

8 99 9 100 10 101 11   TAIL

HEAD

Selanjutnya kita delete pada Node yang di tunjuk oleh *Temp

HEAD 8 99 9 100 10 101 11   TAIL

*P

Kondisi Akhir :

HEAD 9 100 10 101 11   TAIL


DELETE AFTER
Delete After adalah operasi untuk menghapus Node setelah Node tertentu dalam Linked
List.
Kondisi Awal :

HEAD 8 99 9 100 10 101 11   TAIL

Kita gunakan pointer *p untuk mencari Node yang memiliki data 9 dengan
metode Squensial

HEAD 8 99 9 100 10 101 11   TAIL

*P
Jika pointer *p sudah barada di node 9, letakan pointer *Temp berada setelah pointer *p
yaitu Node yang berisi data 10

*Temp

HEAD 8 99 9 100 10 101 11   TAIL

*P

Kemudian next dari *p akan diganti menunjuk ke satu Node setelah *Temp. Maka alamat
pada Node *p akan berubah dan di isi oleh alamat dari Node 11

*Temp

HEAD 8 99 9 101 10 101 11   TAIL

*P
Jika sudah di sambungkan dari Node *p ke Node yang berisi data 11, kemudian hapus Node
yang di tunjuk oleh pointer *Temp.
*Temp

HEAD 8 99 9 101 10 101 11   TAIL

*P

Mercury
HEAD 8 99 9 101 11   TAIL

*P

Kondisi Akhir :

HEAD 8 99 9 101 11   TAIL


DELET LAST
Delete Last adalah operasi untuk menghapus Node terakhir dari Linked List.

Kondisi Awal :

HEAD 8 99 9 100 10 101 11   TAIL

Pertama kita buat pointer *Temp untuk menghapus sebuah Node. Kemudian pointer *Temp ini
letakan di Node terakhir.
*Temp

HEAD 8 99 9 100 10 101 11   TAIL


Selanjutnya kita juga membutuhkan sebuah pointer *p. Pointer *p akan berpindah secara
squensial dan berhenti pada satu Node sebelum Last/Tail.
*Temp

HEAD 8 99 9 100 10 101 11   TAIL

*P

Kemudian TAIL nya berpindah ke *p


*Temp

HEAD 8 99 9 100 10 101 11  

TAIL
Kemudian setelah TAIL nya berpindah maka kita putus dan Node yang di tunjuk oleh
pointer *Temp kita delete.

*Temp

HEAD 8 99 9 100 10 11  

TAIL

Kondisi Akhir :

HEAD 8 99 9 100 10 TAIL


Algoritma dengan Python
- Inisialisasi
Insert First
Insert Middle/After
Insert Last
Delete First
Delete Middle/After
Delete Last
Mengakses / Menampilkan Data
TERIMA KASIH
KAMI PAMIT UNDUR DIRI!

Anda mungkin juga menyukai