Membuat Program Penambahan Elemen, Penghapusan Elemen, Dan Akses Pencarian Elemen Linked List

Linked List

Linked list adalah struktur data linear yang terdiri dari sejumlah simpul (nodes), di mana setiap simpul memiliki dua bagian utama: data yang disimpan (misalnya, nilai atau objek) dan referensi ke simpul berikutnya dalam urutan. Ini berbeda dengan array yang menggunakan indeks untuk mengakses elemen, karena linked list menggunakan referensi antara elemen-elemen untuk membentuk urutan.

1. Contoh Penambahan Elemen pada Linked List


1. Kelas `Games`: Ini adalah kelas yang mewakili simpul (node) dalam linked list. Setiap simpul memiliki atribut `nama` untuk nama game dan `developer` untuk nama pengembang game. Atribut `next` digunakan untuk menunjukkan simpul selanjutnya dalam linked list.

2. Kelas `LinkedListGames`: Ini adalah kelas yang mengelola linked list untuk menyimpan informasi tentang games. Atribut `head` digunakan untuk menunjukkan simpul pertama dalam linked list.

3. Metode `__init__` untuk `LinkedListGames`: Metode ini digunakan untuk inisialisasi linked list, di mana `head` diatur ke `None` karena awalnya linked list kosong.

4. Metode `tambah_di_awal`: Metode ini digunakan untuk menambahkan elemen baru di awal linked list. Itu membuat sebuah objek `Games` baru dengan nilai `nama` dan `developer` yang diberikan, kemudian mengatur `next` objek baru ini ke `head` dan akhirnya mengatur `head` ke objek baru tersebut.

5. Metode `tambah_di_akhir`: Metode ini menambahkan elemen baru di akhir linked list. Jika linked list kosong, maka elemen baru langsung dijadikan `head`. Jika tidak, maka perulangan dilakukan hingga mencapai elemen terakhir, lalu elemen baru ditambahkan di belakang elemen terakhir tersebut.

6. Metode `tambah_di_tengah`: Metode ini menambahkan elemen baru di posisi tertentu dalam linked list. Jika posisi yang diberikan tidak valid (kurang dari 0), maka pesan kesalahan ditampilkan. Jika posisi adalah 0, maka elemen baru ditambahkan di awal dengan memanggil metode `tambah_di_awal`. Jika posisi valid, maka perulangan dilakukan hingga mencapai posisi yang ditentukan, lalu elemen baru ditambahkan di tengah posisi tersebut.

7. Metode `tampilkan_games`: Metode ini digunakan untuk menampilkan semua games dalam linked list. Perulangan dilakukan dari `head` hingga `None`, dan setiap elemen ditampilkan dengan format "Developer: [nama developer], Nama Games: [nama game]".

Penggunaan Kode

1. Membuat Objek `LinkedListGames`: Baris `linked_list_games = LinkedListGames()` membuat objek baru dari kelas `LinkedListGames`.

2.Menambahkan ElemenBarisberikutnya(`linked_list_games.tambah_di_awal(...)`,`linked_list_games.tambah_di_akhir(...)`, `linked_list_games.tambah_di_tengah(...)`) adalah contoh penggunaan metode tambah di awal, akhir, dan tengah.

3. Menampilkan Data: Baris `linked_list_games.tampilkan_games()` digunakan untuk menampilkan semua games yang ada dalam linked list setelah operasi penambahan dilakukan.

Output

Setelah menjalankan kode di atas, outputnya akan berupa daftar games yang telah ditambahkan, sesuai dengan operasi penambahan yang dilakukan sebelumnya.

 Kesimpulan

Kode tersebut mengimplementasikan operasi dasar pada linked list untuk menambahkan elemen di awal, akhir, dan tengah, serta menampilkan data yang tersimpan dalam linked list. Hal ini memungkinkan kita untuk mengelola data games dengan struktur yang terorganisir dan efisien.

2. Contoh Penghapusan Elemen pada Linked List




Kode di atas adalah implementasi dari sebuah linked list untuk menyimpan informasi tentang permainan video (games). Berikut adalah penjelasan detilnya:

  • 1. `Node` adalah kelas yang merepresentasikan simpul atau node dalam linked list. Setiap node memiliki dua atribut: `nama` untuk nama game dan `developer` untuk pengembang game. Atribut `next` digunakan untuk menunjukkan node berikutnya dalam linked list.
  • 2. `LinkedListGames` adalah kelas yang merepresentasikan linked list itu sendiri. Atribut `head` adalah node pertama dalam linked list.
  • 3. Metode `__init__` dari `LinkedListGames` digunakan untuk inisialisasi linked list dengan mengatur `head` menjadi `None` karena linked list awalnya kosong.
  • 4. Metode `tambah_di_awal` digunakan untuk menambahkan node baru di awal linked list. Node baru dibuat dengan nilai `nama` dan `developer` yang diberikan, dan kemudian ditautkan dengan node pertama sebelumnya.
  • 5. Metode `tambah_di_akhir` digunakan untuk menambahkan node baru di akhir linked list. Jika linked list kosong, node baru langsung dijadikan node pertama. Jika tidak, iterasi dilakukan dari node pertama hingga node terakhir, lalu node baru ditautkan setelah node terakhir.
  • 6. Metode `tambah_di_tengah` digunakan untuk menambahkan node baru di posisi tertentu dalam linked list. Jika posisi adalah 0, node baru ditambahkan di awal. Jika tidak, iterasi dilakukan hingga posisi yang ditentukan, lalu node baru ditautkan ke node sebelumnya.
  • 7. Metode `hapus_di_awal` digunakan untuk menghapus node pertama dari linked list.
  • 8. Metode `hapus_di_akhir` digunakan untuk menghapus node terakhir dari linked list.
  • 9. Metode `hapus_di_tengah` digunakan untuk menghapus node pada posisi tertentu dalam linked list. Jika posisi adalah 0, maka node pertama dihapus. Jika tidak, iterasi dilakukan hingga posisi yang ditentukan, lalu node dihapus dengan mengubah tautan node sebelumnya.
  • 10. Metode `tampilkan_games` digunakan untuk mencetak semua informasi game yang disimpan dalam linked list, dimulai dari node pertama. Dan Hasilnya seperti gambar di bawah ini.

Contoh penggunaan kode tersebut adalah dengan menambahkan beberapa game ke linked list, kemudian menampilkan data sebelum dan setelah penghapusan, serta melakukan beberapa operasi penghapusan pada linked list tersebut. 

2. Contoh Pencarian Elemen pada Linked List



Kode di atas merupakan implementasi dari linked list untuk menyimpan data tentang permainan (games) beserta pengelolaannya. Berikut adalah penjelasan detailnya:

  • 1. `Games` adalah kelas untuk merepresentasikan satu node dalam linked list. Setiap node memiliki atribut `nama` untuk nama permainan dan `developer` untuk nama pengembang permainan. Atribut `next` digunakan untuk menunjukkan node selanjutnya dalam linked list.
  • 2. `LinkedListGames` adalah kelas untuk mengelola linked list permainan. Atribut `head` digunakan untuk menyimpan node pertama (head) dari linked list.
  • 3. `__init__` method dalam `LinkedListGames` digunakan untuk inisialisasi linked list dengan mengatur `head` menjadi `None` karena awalnya linked list kosong.
  • 4. `tambah_di_awal` method digunakan untuk menambahkan node baru di awal linked list. Method ini menerima argumen `nama` dan `developer` untuk membuat objek `Games` baru dan kemudian menambahkannya di awal linked list dengan mengatur `next` dari node baru menjadi `head` dan mengubah `head` menjadi node baru.
  • 5. `tampilkan_games` method digunakan untuk menampilkan semua data permainan dalam linked list dengan mengiterasi melalui setiap node dan mencetak informasi pengembang dan nama permainan.
  • 6. `akses_elemen_by_index` method digunakan untuk mengakses node berdasarkan indeks tertentu. Method ini menerima argumen `index` dan mengiterasi melalui linked list sampai menemukan node dengan indeks yang sesuai, kemudian mengembalikan node tersebut. Jika indeks tidak ditemukan, method ini mengembalikan `None`.
  • 7. `cari_elemen_by_value` method digunakan untuk mencari node berdasarkan nilai (nama permainan). Method ini menerima argumen `nama` dan mengiterasi melalui linked list sampai menemukan node dengan nama permainan yang sesuai, kemudian mengembalikan node tersebut. Jika nama permainan tidak ditemukan, method ini mengembalikan `None`.
  • 8. Pada bagian akhir kode, linked list games dibuat dan beberapa operasi dilakukan seperti menambahkan data, menampilkan data games, mengakses data berdasarkan indeks, dan mencari data berdasarkan nama. Dan hasil output nya seperti di gambar bawah ini.

Kode ini secara keseluruhan mengimplementasikan linked list sederhana untuk mengelola data permainan (games) dan menyediakan operasi dasar seperti penambahan di awal, pencarian berdasarkan indeks, dan pencarian berdasarkan nilai (nama permainan).

Komentar