Linked List Ilustration
Single Linked list dapat diilustrasikan sebagai suatu rantai data(node), dimana setiap data menunjuk ke data selanjutnya.
Seperti ilustrasi di atas, terdapat beberapa poin yang perlu dipertimbangkan :- Single linked list terdiri dari suatu unsur utama yang disebut Head
- Single linked list juga memiliki unsur yang dinamakan dengan First
- setiap link membawa suatu field data dan field link yang disebut Next
- Setiap link yang terhubung dengan link selanjutnya menggunakan yang namanya Next Link
- link terakhir membawa link yang berisi null yang menandakan akhir dari list tersebut yang biasa di sebut Tail
Double Linked list dapat diilustrasikan sebagai suatu rantai data(node), dimana setiap data menunjuk ke data selanjutnya dan juga data sebelumnya.

Seperti ilustrasi di atas, terdapat beberapa poin yang perlu dipertimbangkan :
- Double linked list terdiri dari suatu unsur utama yang disebut Head
- Double linked list memiliki yang namanya First dan Last
- Setiap link membawa field data dan dua field link yang disebut dengan Next dan Prev
- Setiap link yang terhubung dengan link selanjutnya menggunakan yang namanya Next Link
- Setiap link yang terhubung dengan link seblumnya menggunakan yang namannya Previous Link
- Link terakhir biasanya membawa null yang menandakan akhir dari list tersebut yang disebut dengan Tail
Operation pada double linked terdapat operasi dasar yaitu, insert dan delete.
>>> Insert
> Saat ingin menginsert node di belakang tail
//insert link at the last location void insertLast(int key, int data) { //create a link struct node *link = (struct node*) malloc(sizeof(struct node)); link->key = key; link->data = data; if(isEmpty()) { //make it the last link last = link; } else { //make link a new last link last->next = link; //mark old last node as prev of new link link->prev = last; } //point last to new last node last = link; }
> saat memasukkan node pada posisi setelah suatu node
>>> Delete
>Jika node di delete pada bagian head atau yang paling awal maka
head = head->next;
free(head->prev);
head->prev = NULL;
>Jika node di delete pada bagian tail atau yang paling akhir maka
tail = tail->prev;
free(tail->next);
tail->next = NULL;
>Jika node di delete pada bagian yang bukan head atau yang paling awal tail atau yang paling akhir maka
struct
tnode *curr = head;
while ( curr->next->value != x ) curr =
curr->next;
struct tnode *a = curr;
struct tnode *del = curr->next;
struct tnode *b = curr->next->next;
a->next = b;
b->prev = a;
free(del);
>Jika node yang di delete adalah node yang hanya sendiri
free(head);
head = NULL;
tail = NULL;
Circular Linked List
Ada juga jenis linked list circular yang mencakupi circular single linked list dan circular double linked list.
1. Circular Single Linked List
Dalam circular single linked list, node terakhir berisikan penunjuk ke node pertama. Pada circular linked list tidak ada tempat penyempinan nilai null dalam listnya
Biasanya dapat diilustrasikan sebagai berikut

2. Circular Double Linked List
Dalam circular double linked list, setiap node memiliki dua pointer. Salah satu pointer itu menunjuk ke node yang selanjutnya dan pointer yang lain menunjuk ke node sebelumnya. Pada circular double linked list tidak terdapat nilai null pada pemnyimpanannya maka circular double linked list ini mirip dengan circular single linked list.
