PENGERTIAN
Linked List atau Single Linked List merupakan suatu bentuk struktur data yang berisi kumpulan data yang disebut sebagai node yang tersusun secara sekuensial, saling sambung menyambung, dinamis, dan terbatas. Linked List adalah struktur berupa rangkaian elemen saling berkait dimana tiap elemen dihubungkan ke elemen yang lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logika walaupun tidak bersebelahan secara fisik di memori. Linked List digunakan untuk strukturisasi data, fungsinya hampir sama dengan ArrayList.
FUNGSI-FUNGSI LINKED-LIST
Berikut adalah beberapa fungsi dasar yang biasanya diimplementasikan dalam linked list pada C++:
1. Menambahkan Elemen (Insertion):
- Di awal (push_front): Menambahkan elemen baru di awal linked list.
- Di akhir (push_back): Menambahkan elemen baru di akhir linked list.
- Di posisi tertentu: Menambahkan elemen baru di posisi tertentu dalam linked list.
2. Menghapus Elemen (Deletion):
- Di awal (pop_front): Menghapus elemen pertama dari linked list.
- Di akhir (pop_back): Menghapus elemen terakhir dari linked list.
- Di posisi tertentu: Menghapus elemen di posisi tertentu dalam linked list.
3. Pencarian (Search):
- Mencari elemen dalam linked list dan mengembalikan apakah elemen tersebut ditemukan atau tidak.
4. Traversing (Traversal):
- Mengunjungi setiap elemen dalam linked list untuk tujuan tertentu, misalnya mencetak nilai setiap elemen.
5. Mendapatkan Panjang (Size):
- Menghitung jumlah elemen dalam linked list.
- Linked list digunakan dalam penjadwalan Round-Robin untuk melacak giliran dalam permainan multi-pemain.
- Digunakan dalam aplikasi penampil gambar. Gambar sebelumnya dan berikutnya ditautkan, sehingga dapat diakses oleh tombol prev dan next.
- Dalam playlist musik, lagu yang sedang diputar ditautkan ke lagu sebelumnya dan berikutnya.
- Struktur data dinamis: Linked list adalah himpunan dinamis sehingga dapat bertambah dan menyusut saat runtime dengan mengalokasikan dan membatalkan alokasi memori. Jadi kita tidak perlu memberikan ukuran awal dari linked list.
- Tidak boros memori: Dalam linked list, pemanfaatan memori yang efisien dapat dicapai karena ukuran linked list bertambah atau berkurang pada runtime sehingga tidak ada pemborosan memori dan tidak perlu mengalokasikan memori sebelumnya.
- Implementasi: Struktur data linier seperti stack dan queue seringkali mudah diimplementasikan menggunakan linked list.
- Operasi penyisipan dan penghapusan: Operasi penyisipan dan penghapusan cukup mudah dalam linked list. Kita tidak perlu menggeser elemen setelah operasi penyisipan atau penghapusan elemen, hanya alamat yang ada di pointer berikutnya saja yang perlu diperbarui.
- Penggunaan memori: 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.
- Traversal: 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 simpul pada posisi n dari linked list, kita harus melintasi semua simpul sebelumnya.
- Reverse Traversing: 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.
- pushDepan: 5, 3, 7, 9 maka hasilnya adalah: 9 ->7 ->3 -> 5 -> NULL
- pushBelakang: 5, 3, 7, 9 maka hasilnya adalah: 5 ->3 ->7 ->9 -> NULL
- popDepan: 5, 3, 7, 9 maka hasilnya adalah: 3, 7, 9 , NULL
- popBelakang: 5, 3, 7, 9 maka hasilnya adalah: 5 ->3 ->7 -> NULL
Tidak ada komentar:
Posting Komentar