Kembali lagi semuanya, setelah minggu lalu kita membahas berbagai macam operasi penyisipan baik sisip depan,tengah,dan belakang, sekarang disinilah kita akan membahas materi terakhir kita, yaitu tentang operasi penghapusan, baik operasi penghapusan depan,tengah maupun belakang.
1.Hapus Belakang
Dari gambar diatas, untuk melakukan proses operasi hapus belakang, kita bisa melakukannya dengan menggunakan iterator.
Untuk melakukan penyisipan pun, baik dari sisip depan, tengah, atau belakang kita bisa melakukannya dengan iterator
Dengan iterator kita bisa dengan mudah melakukan operasi penghapusan hanya dengan mengarahkan iterator ke node B dimana node B merupakan node yang berada di belakang node terakhir. Untuk apa iterator digunakan? karena, singly linkedlist memiliki behaviour dia tidak bisa mundur melainkan hanya bisa berjalan maju saja berbeda dengan doubly ataupun circular, yang berarti tail tidak bisa semena-mena kita mundurkan ke belakang, maka dari itu, kita memerlukan iterator untuk memindahkan tail kita ke belakang sebelum node C.
Setelah itu, kita pindahkan tail yang ada pada node C, ke node dimana iterator berada saat ini.
Lalu apakah sampai sini selesai? tentu tidak, kita masih harus memindahkan penghubung node B yang mengarah ke node C ke arah null, bagaimana caranya? caranya, kita arahkan tail yang berada di node B yang tadinya menunjuk ke C kita arahkan ke null.
Maka proses penghapusan belakang selesai. Lalu bagaimana dengan node C ? jika kita menggunakan java nanti dia akan di kumpulkan oleh Garbage Collector yang nantinya dia akan terbuang dengan sendirinya.
2. Penghapusan tengah
Untuk melakukan penghapusan tengah mari kita mulai dengan kasus di bawah ini :
Dari linked list diatas, kita ingin menghapus node yang berada di tengah, yaitu node B. Bagaimana caranya ? caranya cukup mudah, hampir sama dengan cara penghapusan belakang, kita hanya tinggal pindahkan iteratornya nya sebelum node yang akan dihapus, dalam kasus ini karena iterator sudah berada di tempat seharusnya, maka tidak perlu kita pindahkan lagi.
Lalu, setelah itu kita putuskan hubungan reference antara node A dengan node B.
Setelah itu, kita bisa langsung pindahkan node B ke arah null.
Maka hasil dari penghapusan kita , akan menjadi seperti diatas.
3. Penghapusan Depan
Untuk melakukan penghapusan, kita perlu memindahkan head terlebih dahulu ke node lain , kenapa ? karena node yang ada pada head akan dihapus otomatis head nya harus berpindah pada node B,Lalu bagaimana agar head berpindah ke B ? cara nya adalah dengan menggerakkan iterator ke arah B, maka head akan berpindah ke B
Lalu, setelah itu kita pisahkan node A dengan node B dengan mengarahkan reference node A ke null.
Lalu proses penghapusan selesai.
Dengan selesainya proses penghapusan, selesai pula materi kita hari ini, terimakasih sudah mengikuti materi kami dari part 1 hingga part 3, jangan lupa follow, dan beri kritik dan saran. Kamu juga bisa mengirim artikel lewat form yang kami sediakan di : himadira menulis, kami akan memilih artikel yang paling menarik dari tulisan kalian mari bergabung untuk menulis bersama kami , terimakasih sampai jumpa di artikel selanjutnya :)