๐ Daftar Isi
Pada artikel kali ini kita akan membahas operasi-operasi menambah nodeyang dapat kita lakukan pada single linked list. Perlu diperhatikan bahwa untuk mengakses array, kita memakai nama variabel array dari indexnya.
Untuk mengakses linked list (node-node di dalamnya) yang diketahui adalah node/pointer head (karena dari head kita bisa cara seluruh elemen dalam linked list)
Menambahkan Node (Insert)
Insert sebagai node awal (head) dari linked list
Contoh: Insert node dengan data = 4 sebagai head linked list 3->2->1 sehingga menjadi 4->3->2->1
mynode insert_head(mynode head, int nilai)
{
mynode new_node = createnode(nilai);
new_node->next = head;
head = new_node;
return(head);
}
- Membuat node baru new_node
- Mengarahkan pointer next dalam new_node ke head, sehingga head yang baru adalah new_node
- Karena linked list sudah berubah maka retrun-kan head yang baru
Insert sebagai node akhir (tail) dari linked list
Contoh: Insert node dengan data = 0 sebagai tail linked list 3->2->1 sehingga menjadi 3->2->1->0
mynode insert_tail(mynode head, int nilai)
{
/* Iterasi mencari node terakhir */
mynode tail = head;
while (tail->next != NULL)
tail = tail->next;
/* Buat node baru */
mynode new_node = createnode(nilai);
tail = new_node;
return(head);
}
- Terlebih dahulu mencari node tail (yaitu yang pointer next-nya mengarah ke NULL) dengan melakukan iterasi dari head
- Setelah ditemukan node tail, buat node baru new_node
- Mengarahkan pointer next dari tail sebelumnya ke new_node, sehingga new_node menjadi tail.
Insert setelah node tertentu
Contoh: Insert node dengan data = 5 setelah node yang ditandai dengan โcursorโ (data = 3)
mynode insert_after(mynode head, int nilai, int prev_nilai)
{
/* Mencari node sebelumnya, dimulai dari node pertama atau head */
mynode cursor = head;
while (cursor->value != prev_nilai)
cursor = cursor->next;
mynode new_node = createnode(nilai);
new_node->next = cursor->next;
cursor->next = new_node;
return(head);
}
- Terlebih dahulu mencari node cursor (yaitu node yang mempunyai nilai prev_nilai) dengan iterasi dari node head.
- Jika sudah ditemukan, buat node baru new_node. Arahkan pointer next new_node ke alamat yang ditunjuk pointer next cursor. Dan arahkan pointer next cursor ke new_node.
Insert sebelum node tertentu
Contoh: Insert node dengan data = 6 sebelum node yang ditandai dengan โcursorโ (data = 5)
mynode insert_before(mynode head, int nilai, int next_nilai)
{
if (head->value == next_nilai)
head = insert_head(head, nilai);
else
{
mynode cursor, precursor;
cursor = head;
do
{
precursor = cursor;
cursor = cursor->next;
}
while (cursor->value != next_nilai);
mynode new_node = createnode(nilai);
new_node->next = cursor;
prevcursor->next = new_node;
}
return(head);
}
- Pengguaan if Jika data yang dicari berada pada awal Linked List atau head berarti gunakan fungsi sebelumnya
- Penggunaan Else Jika data yang dicari tidak berada pada awal Linked List Menggunakan node bantuan prevcursor untuk menyimpan node sebelumnya, agar bisa dihubungkan dengan node baru
Materi Lengkap
Silakan baca juga beberapa artikel menarik kami tentang Single Linked List, daftar lengkapnya adalah sebagai berikut.