Selasa, 03 Maret 2020

Linked List

Single Linked List
Linked List merupakan kumpulan dari banyak data, yang disebut sebagai nodes, dimana setiap node akan menunjuk pada node lain melalui pointer. Linked List bisa juga disebut kumpulan data linear.

Linked List yang memiliki satu penghubung dengan node lain, disebut single linked list.
Dalam Linked List pasti terdapat node yang bernama head dan tail. Head yang dimaksud disini adalah penunjuk untuk menunjukkan dimana letak data pertama dan tail menunjukkan dimana letak data terakhir. 

Sebuah linked list, dikatakan kosong jika tidak memiliki head yang menandakan bahwa node tersebut kosong.

Operasi pada single linked list:
1. Push (Memasukkan data)
2. Pop (Menghapus data dari Node)

1. Push
Push merupakan operasi pada linked list untuk menginsert suatu data pada node, push bisa saja dilakukan pada head, tail, ataupun index.

Contoh push adalah sebagai berikut:
Jika terdapat node yang berisi angka 7, 6, 9, 3, 5 , NULL
Kemudian pushHead(4) maka hasilnya akan menjadi 4, 7, 6, 9, 3, 5, NULL
Sama halnya jika melakukan pushTail(10) hasilnya akan menjadi 4, 7, 6, 9, 3, 5, 10, NULL

Untuk contoh kode pushHead bisa dilihat dibawah ini
public void pushHead(int n){ // int n ini merupakan data yang akan dimasukkan pada linked list
struct Data* curr = (struct Data*)malloc(sizeof(Data));
    curr->isi = n;
    if(head==NULL) head = tail = curr; // Jika belum terdapat head
    else{
        curr->next = head;
        head = curr;
    }
}

Hasil gambar untuk push head linked list

2. Pop
Pop merupakan kebalikan dari push, dimana fungsi pop adalah mendelete suatu data dalam linked list dan melepaskanny agar memory dapat dipakai kembali. Pop biasa digunakan untuk mendelete head, tail ataupun suatu index.

Contoh pop:
terdapat suatu data 1, 5, 6, 7, 8, 9, NULL
Kemudian popHead() maka hasilnya akan menjadi  5, 6, 7, 8, 9, NULL
Jika popTail() maka hasilnya akan menjadi  5, 6, 7, 8, NULL

Untuk contoh kode dari popHead bisa dilihat dibawah ini
 
 void popHead(){
    struct Data* curr = head;
    head = head->next; // merubah head ke angka selanjutnya dikarenakan angka pada head akan dilepas
    free(curr);
}

Hasil gambar untuk poplinked list

Kesimpulannya, jika ingin memproses suatu data sangat disarankan menggunakan konsep array dinamis untuk memakai Single Linked List ataupun Double Linked List di karenakan jika memakai array yang statis, penggunaan ruang memori yang sudah digunakan tidak dapat dihapus apabila nama variable array tersebut sudah tidak digunakan kembali dalam suatu program.



Tidak ada komentar:

Posting Komentar