Welcome back to my Blog!
Nah, untuk melanjutkan membaca post ini, alangkah baiknya kita semua mengerti terlebih dahulu mengenai materi Single Linked List pada Data Structures, agar proses pembelajaran-pun akan terasa lebih baik dan lancar. Untuk post kali ini, kita akan belajar mengenai 3 hal yaitu :
↣ Circular Single Linked List
↣ Double Linked List
↣ Circular Double Linked List
➤ Circular Single Linked List
✻ Untuk konsep Circular Single Linked List ini sebenarnya tidak jauh berbeda dengan konsep Single Linked List umum. Perbedaannya ialah dalam konsep circular, node terakhir yang ada dalam memori kita itu menunjuk node pertama kita, dengan kata lain yaitu Head. Untuk konsep Circular Single Linked List ini juga tidak terdapat pointer yang menunjuk ke NULL, karena setiap node akan menunjuk node lainnya.
✲ Untuk kegunaannya sendiri, pada umumnya konsep ini digunakan untuk maintain sistem operasi yang sedang berjalan, atau seperti saat user menjalankan suatu browser dan menuju ke web page lain, lalu user ingin kembali ke web sebelumnya dengan menggunakan tombol back/previous.
➤ Double Linked List
✻ Nah, untuk konsep double linked list, setiap node kita nantinya akan mempunyai 2 pointer yaitu *next dan *prev, berbeda saat kita memakai konsep single linked list yang hanya memiliki pointer *next. Dengan adanya *prev, ini lebih memudahkan kita untuk melakukan searching data, insert maupun delete data kita nantinya karena *prev merupakan pointer yang menunjuk node sebelumnya.
✱ Jadi, dengan konsep double Linked List, kita dapat menuliskan code dengan contoh sebagai berikut:
Node *current = (*Node)malloc(sizeof(Node));
current->data = data;
current->next = NULL;
current->prev = NULL;
return current;
➤ Circural Double Linked List
✲ Nah, untuk konsep yang terakhir ini, yaitu Circural Double Linked List, tidak jauh berbeda dengan konsep Circural Singe Linked List, bedanya dalam konsep ini memiliki 2 pointer. Dan juga untuk konsep ini, seharusnya lebih memudahkan kita dalam memanipulasi data pada pointer dan mengefesiensikan melakukan pencarian data.