Linked
list 2 ==>
1. Menjelaskan
konsep dari data struktur dan penggunaannya di teknik informatika.
2. Mengilustrasikan
pembelajaran data struktur dan pengaplikasiannya.
3. Mengaplikasikan
data struktur di C.
Linked
list adalah linear data struktur, di mana elemen tidak disimpan di lokasi
memori yang berdekatan. Elemen-elemen dalam linked list ditautkan menggunakan
pointer.
Circular
single linked list = dalam circular tail selalu menunjuk ke
head, berbeda dengan linked list biasa yang tail menunjuk ke null.
Doubly
linked list = two way linked list = linked list data
struktur dengan 2 link, 1 mengandung referensi ke data selanjutnya dan yang 1
mengndung referensi ke data sebelumnya.
struct tnode {
int
value;
struct
tnode *next;
struct
tnode *prev;
};
struct
tnode *head = 0;
struct
tnode *tail = 0;
Format
baris dalam program =
- Next statement
- Value
statement
- Previous statement
linked list insertion =
- memasukan node dari depan : Node baru selalu ditambahkan sebelum head linked list yang diberikan. Dan node yang baru ditambahkan menjadi head baru dari linked list.
- memasukan node setelah simpul yang diberikan : saya diberi pointer ke sebuah node, dan node baru dimasukkan setelah node yang diberikan.
- Node baru selalu ditambahkan setelah node terakhir dari linked list yang diberikan.
Doubly
linked list: insert = sama seperti single linked list,
pertama kita harus mengalomasikan node baru dan memasukan nilai ke dalamnya,
lalu kita mengoneksikan node dengan existing linked list.
Misalkan
kita ingin menambahkan node baru di belakang tail =
struct tnode *node =
(struct
tnode*) malloc(sizeof(struct tnode));
node->value
= x;
node->next = NULL;
node->prev = tail;
tail->next = node;
tail =
node;
Doubly
linked list: delete = ada 4 kondisi yang harus kita
perhatikan saat deleting =
1. Node
yang akan di delete adalah node yang hanya ada di linked list.
free(head);
head = NULL;
tail = NULL;
2. Node
yang akan di delete adalah head.
head = head->next;
free(head->prev);
head->prev = NULL;
3. Node
yang akan di delete adalah tail.
tail
= tail->prev;
free(tail->next);
tail->next
= NULL;
4. Node
yang akan di delete bukan tail atau head.
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);
Circular
doubly linked list = mirip dengan circular single linked list, tapi total pointer di
tiap node disini adalah 2 pointer.
sumber = https://www.geeksforgeeks.org/data-structures/linked-list/
https://en.wikipedia.org/wiki/Linked_list