LINKED LIST


Linked List atau juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada Linked List disebut Node. Biasanya didalam suatu linked list, terdapat istilah head dan tail. 
  • Head  adalah elemen yang berada pada posisi pertama dalam suatu linked list
  • Tail adalah elemen yang berada pada posisi terakhir dalam suatu lindked list
Ada beberapa macam Linked List , yaitu :
  1. Single Linked List
  2. Double Linked List
  3. Circular Linked List
  4. Multiple Linked Lis

Single Lingked List

Single Linked List merupakan suatu linked list yang hanya memiliki satu variable pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.


contoh syntaxnya :

struct Mahasiswa
{
      char nama[25];
      int usia;
      struct Mahasiswa *next;
}*head,*tail;




Double Lingked list

Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.



contoh syntaxnyaa :

struct Mahasiwa
{
     char nama[25];
     int usia;
     struct Mahasiswa *next,*prev;
}*head,*tail;



Circular Linked List

Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk NULL. Ada 2 jenis Circular Linked List, yaitu :

  • Circular Single Linked List


  • Circula Double Linked List
          
  • Multiple Linked List
          Multiple Linked List merupakan suatu linked list yang memiliki lebih dari 2 buah variabel pointer , contoh :
                                   





LINKED LIST vs ARRAY




Memory Allocation
Dalam C/C++, alokasi memory dapat dilakukan dengan menggunakan malloc , sedangkan untuk dealokasi dapat menggunakan free. Fungsi free hanya membebaskan memory tetapi tidak menghapus isi dari memory tersebut. 

contoh penggunaan malloc:

int *px = (int *) malloc(sizeof(int));
char *pc = (char *) malloc(sizeof(char));
struct Facebook *curr = (struct Facebook*) malloc(sizeof(struct Facebook));


contoh penggunaan free:

free(curr);

Alokasi suatu memory biasanya dibutuhkan didalam linked list saat akan menambah node/data baru.

Insert dan Delete Node dalam Single Linked List

Insert (push) dan delete (pop) node pada linked list dapat dilakukan pada posisi depan (head), tengah (mid) dan belakang (tail)


Insert ( Push ) 
Contoh syntax push depan :


Contoh syntax push belakang :




Delete ( Pop )
Contoh syntax pop depan :


Contoh syntax pop belakang :




Insert dan Delete Node dalam Double Linked List

Insert (push) dan delete (pop) node pada linked list dapat dilakukan pada posisi depan (head), tengah (mid) dan belakang (tail)

Insert(Push)
contoh syntax push depan :

contoh syntax push belakang :



Delete(Pop)
contoh syntax pop depan:



contoh syntax pop belakang :


Header Linked List

Selain ke-4 jenis Linked List diatas, ada juga jenis lain yaitu header linked list. Header linked list merupakan header spesial yang terdiri dari node headernya. Jadi, linked list jenis ini tidak menunjuk pada node pertama (head) namun hanya menyimpan alamat dari node headernya.


Priority Queue

Priority Queue mirip dengan queue biasa yang telah dijelaskan pada Array, Pointer dan Struktur Data yang dipost sebelumnya. Hanya saja queue ini di urutkan berdasarkan prioritasnya. Misalnya kita ingin membuat queue berdasarkan umur yang paling muda ke tua. Maka umur menjadi prioritas. Penyusunan node ini mungkin mirip seperti sorting.

contoh codingan priority queue :




source  : http://student-activity.binus.ac.id/himmat/2019/04/data-stucture/

Comments