Selasa, 25 Februari 2020

Linked List

Apa itu Linked List

Linked list adalah struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam urutan).

Macam- Macam Linked List yang akan dibahas kali ini:

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


contoh codingannya :

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

2. Circular Single Linked List 
 Merupakan suatu linked list dimana tail(node terakhir) menunjuk ke head (node pertama). Jadi, tidak ada pointer yang menunjuk ke NULL. Ilustrasinya: 


3. Circular double Linked List 
Hampir sama dengan Circular Single Linked list, akan tetapi ada 2 pointer di setiap nodes. Ilustrasinya: 



4. Double Linked List 
 Merupakan suatu linked list yang memiliki dua variabel pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tail juga menunjuk ke NULL. Ilustrasinya: 

Contoh codingannya:
struct Tnode {
                        int value;
                        struct Tnode *next;
                        struct Tnode *prev;
            };
            struct Tnode *head = 0;
            struct Tnode *tail = 0;

Jika kita ingin membuang node dalam double linked list maka kita harus memperhatikan 4 hal:
1. Node yang ingin dibuang hanya 1 di linked list
  free(head);
            head = NULL;
            tail = NULL;

2. Node yang dibuang adalah kepala (head)
  head = head->next;
            free(head->prev);
            head->prev = NULL;


3. Node yang dibuang adalah ekor (tail)
  tail = tail->prev;
  free(tail->next);

  tail->next = NULL;

4. Node yang dibuang bukanlah kepala atau ekor

struct Tnode *curr = head;
            while ( curr->next->value != x ) curr = curr->next;
            struct Tnode *a   = curr;
            struct Tnode *del = curr->next;
            struct Tnode *b   = curr->next->next;
            a->next = b;
            b->prev = a;
            free(del);




Tidak ada komentar:

Posting Komentar