fbpx

Struktur Data : Operasi Menambah Node Pada Single Linked List Bahasa C

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.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!
Up