LINEAR SINGLY LINKED LIST
Kelompok III
Anggota Kelompok III
1. SARI MARTINA NIM. : 230111062
2. AYU SOLEHAH NIM. : 230111067
3. DESI MILIANA NIM. : 230111069
4. AMAT NIM : 230111070
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
Linked list adalah himpunan dinamis
sehingga dapat bertambah dan
menyusut saat runtime dengan
mengalokasikan dan membatalkan
alokasi memori.
Dalam linked list, pemanfaatan memori yang
efisien dapat dicapai karena ukuran linked list
bertambah atau berkurang pada runtime
sehingga tidak ada pemborosan memori
Struktur data linier seperti stack dan
queue seringkali mudah
diimplementasikan menggunakan linked
list.
Operasi penyisipan dan penghapusan cukup
mudah dalam linked list. Kita tidak perlu
menggeser elemen setelah operasi
penyisipan atau penghapusan elemen
Struktur data Dinamis Tidak Boros Memori
Implementasi Operasi Insert & Delete
Kekurangan Linked List
Linked list memerlukan lebih banyak
memori dibandingkan dengan array.
Karena dalam linked list, pointer juga perlu
menyimpan alamat elemen berikutnya dan
membutuhkan memori tambahan untuk
dirinya sendiri.
Dalam traversal, linked list lebih banyak
memakan waktu dibandingkan dengan array.
Akses langsung ke elemen tidak bisa dilakukan
pada linked list seperti array yang dapat akses
elemen berdasarkan indeks. Untuk mengakses
sebuah node pada posisi n dari linked list, kita
harus melintasi semua node sebelumnya.
Dalam single linked list, reverse traversing
tidak dimungkinkan, tetapi dalam kasus
double-linked list, ini dapat dimungkinkan
karena berisi pointer ke node yang
terhubung sebelumnya dengan setiap node.
Untuk melakukannya, diperlukan memori
tambahan untuk pointer sebelumnya
sehingga ada pemborosan memori.
Akses acak tidak bisa dilakukan dalam linked
list karena alokasi memorinya yang dinamis.
Penggunaan Memori Traversal
Reverse Traversing
Akses Acak
SELANJUTNYA….
Find Size Singly Linked List
Menemukan panjang linked list, atau find size singly linked list,
adalah proses mencari panjang linked list dengan menelusuri setiap
elemen menggunakan loop. untuk memahami konsep linked list
secara lebih jelas, mari kita lihat ilustrasi visual bagaimana node-
node terhubung satu sama lain dalam struktur data ini. Bayangkan
sebuah linked list dengan empat node: A, B, C, dan D. Setiap node
memiliki dua komponen, yaitu data dan pointer ke node berikutnya.
Kita dapat menggambarkan linked list ini seperti berikut:
A -> B -> C -> D
Gabungan dua linked list dapat dilakukan dengan membuat simpul tiruan.
Penunjuk ekor akan m enunjuk ke simpul tiruan pada awalnya, kemudian
menunjuk ke simpul terakhir dari daftar hasil.
Diberikan dua daftar tertaut yang diurutkan yang masing-masing terdiri
dari N dan M node. Tugasnya adalah menggabungkan kedua daftar (di tempat)
dan mengembalikan kepala daftar yang digabungkan.
Contoh:
Masukan: a: 5->10->15, b: 2->3->20 Keluaran: 2->3->5->10->15->20
Masukan: a: 1->1, b: 2->4 Keluaran: 1->1->2->4 Masukan: a: 1->2->3, b: null Keluaran:
1->2->3
Combine Two Linked List
Ikuti langkah-langkah di bawah ini untuk menyelesaikan
masalah:
1. Periksa nilai mana yang lebih kecil dari kedua node saat
ini
2. Yang memiliki nilai lebih rendah membuat panggilan
rekursi dengan bergerak maju dengan pointer tersebut
dan secara bersamaan menambahkan panggilan rekursi
tersebut dengan node tersebut
3. letakkan juga dua kasus dasar untuk memeriksa apakah
salah satu daftar tertaut akan mencapai NULL, lalu
tambahkan sisa daftar tertaut.
Split Singly Linked List
Split singly linked list adalah teknik untuk membagi daftar tertaut tunggal menjadi
dua bagian. Teknik ini menggunakan dua penunjuk, di mana salah satu penunjuk
bergerak dua kali lebih cepat dari yang lain. Saat penunjuk cepat mencapai akhir,
penunjuk lambat berada di tengah. Daftar tertaut kemudian dipisahkan pada titik ini
untuk membuat dua daftar terpisah.
Untuk lebih menghargai dan memahami teknik dua penunjuk serta efisiensinya,
mari kita lihat sekilas solusi kurang optimal yang mungkin muncul pertama kali di
pikiran.
Salah satu solusi yang mungkin muncul dalam pikiran adalah menggunakan array
untuk menyimpan representasi dari linked list. Kita kemudian dapat mengembalikan
node pada indeks dari akhir minus n.
TERIMA KASIH
SELESAI!

PPT KELOMPOK III LINEAR SINGLY LINKED LIST.pptx

  • 1.
    LINEAR SINGLY LINKEDLIST Kelompok III
  • 2.
    Anggota Kelompok III 1.SARI MARTINA NIM. : 230111062 2. AYU SOLEHAH NIM. : 230111067 3. DESI MILIANA NIM. : 230111069 4. AMAT NIM : 230111070
  • 3.
  • 4.
    Linked List Linked Listadalah 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
  • 5.
    node pertama darilinked 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.
  • 6.
  • 7.
    Kelebihan Linked List Linkedlist adalah himpunan dinamis sehingga dapat bertambah dan menyusut saat runtime dengan mengalokasikan dan membatalkan alokasi memori. Dalam linked list, pemanfaatan memori yang efisien dapat dicapai karena ukuran linked list bertambah atau berkurang pada runtime sehingga tidak ada pemborosan memori Struktur data linier seperti stack dan queue seringkali mudah diimplementasikan menggunakan linked list. Operasi penyisipan dan penghapusan cukup mudah dalam linked list. Kita tidak perlu menggeser elemen setelah operasi penyisipan atau penghapusan elemen Struktur data Dinamis Tidak Boros Memori Implementasi Operasi Insert & Delete
  • 8.
    Kekurangan Linked List Linkedlist memerlukan lebih banyak memori dibandingkan dengan array. Karena dalam linked list, pointer juga perlu menyimpan alamat elemen berikutnya dan membutuhkan memori tambahan untuk dirinya sendiri. Dalam traversal, linked list lebih banyak memakan waktu dibandingkan dengan array. Akses langsung ke elemen tidak bisa dilakukan pada linked list seperti array yang dapat akses elemen berdasarkan indeks. Untuk mengakses sebuah node pada posisi n dari linked list, kita harus melintasi semua node sebelumnya. Dalam single linked list, reverse traversing tidak dimungkinkan, tetapi dalam kasus double-linked list, ini dapat dimungkinkan karena berisi pointer ke node yang terhubung sebelumnya dengan setiap node. Untuk melakukannya, diperlukan memori tambahan untuk pointer sebelumnya sehingga ada pemborosan memori. Akses acak tidak bisa dilakukan dalam linked list karena alokasi memorinya yang dinamis. Penggunaan Memori Traversal Reverse Traversing Akses Acak
  • 9.
  • 10.
    Find Size SinglyLinked List Menemukan panjang linked list, atau find size singly linked list, adalah proses mencari panjang linked list dengan menelusuri setiap elemen menggunakan loop. untuk memahami konsep linked list secara lebih jelas, mari kita lihat ilustrasi visual bagaimana node- node terhubung satu sama lain dalam struktur data ini. Bayangkan sebuah linked list dengan empat node: A, B, C, dan D. Setiap node memiliki dua komponen, yaitu data dan pointer ke node berikutnya. Kita dapat menggambarkan linked list ini seperti berikut: A -> B -> C -> D
  • 11.
    Gabungan dua linkedlist dapat dilakukan dengan membuat simpul tiruan. Penunjuk ekor akan m enunjuk ke simpul tiruan pada awalnya, kemudian menunjuk ke simpul terakhir dari daftar hasil. Diberikan dua daftar tertaut yang diurutkan yang masing-masing terdiri dari N dan M node. Tugasnya adalah menggabungkan kedua daftar (di tempat) dan mengembalikan kepala daftar yang digabungkan. Contoh: Masukan: a: 5->10->15, b: 2->3->20 Keluaran: 2->3->5->10->15->20 Masukan: a: 1->1, b: 2->4 Keluaran: 1->1->2->4 Masukan: a: 1->2->3, b: null Keluaran: 1->2->3 Combine Two Linked List
  • 12.
    Ikuti langkah-langkah dibawah ini untuk menyelesaikan masalah: 1. Periksa nilai mana yang lebih kecil dari kedua node saat ini 2. Yang memiliki nilai lebih rendah membuat panggilan rekursi dengan bergerak maju dengan pointer tersebut dan secara bersamaan menambahkan panggilan rekursi tersebut dengan node tersebut 3. letakkan juga dua kasus dasar untuk memeriksa apakah salah satu daftar tertaut akan mencapai NULL, lalu tambahkan sisa daftar tertaut.
  • 13.
    Split Singly LinkedList Split singly linked list adalah teknik untuk membagi daftar tertaut tunggal menjadi dua bagian. Teknik ini menggunakan dua penunjuk, di mana salah satu penunjuk bergerak dua kali lebih cepat dari yang lain. Saat penunjuk cepat mencapai akhir, penunjuk lambat berada di tengah. Daftar tertaut kemudian dipisahkan pada titik ini untuk membuat dua daftar terpisah. Untuk lebih menghargai dan memahami teknik dua penunjuk serta efisiensinya, mari kita lihat sekilas solusi kurang optimal yang mungkin muncul pertama kali di pikiran. Salah satu solusi yang mungkin muncul dalam pikiran adalah menggunakan array untuk menyimpan representasi dari linked list. Kita kemudian dapat mengembalikan node pada indeks dari akhir minus n.
  • 14.