Selasa, 03 Maret 2020

Rangkuman Pertemuan 3 : Single Link List

Single Linked List

Apasih Single Linked List itu? 

Single Linked List adalah sekumpulan record atau umumnya kita kenal juga sebagai node yang saling terhubung melalui pointer pada masing-masing record.

Gambaran Single Linked List

Single Linked List pada umumnya memiliki 2 pointer yang berfungsi  sebagai paramater untuk memudahkan saat memroses record. Pointer yang pertama yaitu Head, pointer yang menunjuk ke record paling pertama dan Tail, yaitu pointer yang menunjuk ke record paling akhir. Dalam Single Linked List, record paling akhir atau Tail selalu menunujuk ke NULL yang menandakan tidak ada record selanjutnya.

Bagaimana Coding Single Linked List?

Dalam coding Single Linked List, kita akan mengenal beberapa fungsi utama yang berperan untuk membentuk sebuah Linked List. Mari kita simak,
  • Insert/Push, fungsi yang berperan untuk memasukkan record/node ke dalam Linked List.
  • Delete/Pop, fungsi yang berperan untuk menghapus record/node dalam Linked List.
  • Print, fungsi untuk menampilkan isi dari record/node dalam Linked List.
Nah, tapi sebelum me-ngoding fungsi-fungsi tersebut, kita pasti membutuhkan Struct atau template dari record yang akan masuk ke dalam Linked List kita.

struct mahasiswa{
char nama[100];
int no_urut;
mahasiswa *next;
}*head, *tail;

Seperti yang dapat kita lihat, setiap record di Single Linked List hanya memiliki satu pointer untuk menunjuk ke data yang bersebelahan yaitu pointer next menunjuk ke data yang berada di depan sementara pada Double Linked List terdapat dua pointer yaitu next dan prev yang berarti dapat menunjuk ke data yang berada di depan sekaligus di belakang. Inilah perbedaan mendasar antara Single Linked List dan Double Linked List.

Single Linked List : Push

Push di dalam Single Linked List sebenarnya ada beragam. Namun, kali ini akan saya contohkan dengan Push Head, artinya data yang masuk akan selalu berada di paling depan dari Linked List. Silahkan teman-teman coba sendiri untuk Push Tail ataupun Push Mid

Contoh codingan Push Head :
char name[100] = "Immanuel";
int no_urut = 10; 
mahasiswa *node = (node*) malloc(sizeof (node));
strcpy(node->name,name);
no_urut->node = no_urut;
node->prev = NULL; 
node->next = head;
head->prev = node;
head = node;

Single Linked List : Pop

Dalam Single Linked List, Pop hanya bisa dilakukan Pop Head dan Pop Tail karena keterbatasan fungsionalitas pada Single Linked List. Maksudnya record pada Single Linked List tidak bisa menunjuk ke record yang berada di belakangnya dan hal ini menjadikan Single Linked List terbatas dalam memroses record di dalamnya.  Bahkan untuk melakukan Pop Tail, harus traverse dulu Linked List sampai sebelum data terakhir baru bisa Pop Tail yang mana ini sangat tidak efisien.

Contoh Codingan Pop Head :
//apabila head = tail maka artinya hanya ada 1 data dalam Linked List
if (head == tail) {
   free(head);
   head = tail = NULL;
}else if(head){
   //kalau head ada isi dan bukan sama dengan tail, artinya record ada beberapa
   mahasiswa *temp = head;
   head = head->next;
   free(temp);
}
//kalau head == NULL, artinya Linked List belum ada isi dan Pop tidak akan jalan

Single Linked List : Print

Di sini saya akan mencontohkan untuk melakukan print semua record yang ada di dalam Linked List.

Contoh Codingan Print :

mahasiswa *curr = head;
//looping selama curr != NULL artinya looping sampai akhir
while(curr){
   printf("Nama : %s, No urut : %d\n", curr->nama, curr->no_urut);
   curr = curr->next;
}

Kesimpulannya, sangat disarankan untuk teman-teman yang memang ingin melakukan pemrosesan data menggunakan konsep array dinamis unutk memakai Double Linked List karena fungsionalitasnya jauh lebih baik dari Single Linked List. Namun, memang untuk belajar, Single Linked List akan lebih mudah untuk dipahami. Silahkan gunakan keduanya dengan bijaksana.

Demikianlah rangkuman saya mengenai materi Single Linked List, semoga membantu teman-teman sekalian. Beri tahu saya melalui kolom komentar kalau ada penjelasan yang kurang / salah. Terimakasih.

Referensi Link Gambar :
- Gambar Single Linked List : https://media.geeksforgeeks.org/wp-content/cdn-uploads/gq/2013/03/Linkedlist.png

Tidak ada komentar:

Posting Komentar