top of page
Search

LINKED LIST II

  • Writer: michael kurniawan
    michael kurniawan
  • Feb 25, 2020
  • 2 min read

Setelah mengetahui apa itu Linked List pada Blog Linked List 1

pada blog Linked List II ini saya akan menjelaskan tentang jenis-jenis Linked List.


CIRCULAR SINGLE LINKED LIST

 

Circular Single Linked List adalah sebuah Linked List dimana semua node terhubung untuk membentuk sebuah loop.

Pada Circular Single Linked List tidak memiliki NULL pada bagian akhirnya.

Pada illustrasi diatas setiap node pada Linked List mempunyai field yang berisi pointer ke node berikutnya dan juga memiliki field yang berisi data yang merujuk kenode berikutnya.

Pada akhir Linked List node terakhir akan menunjuk kenode terdepan sehingga Linked List tersebut berputar/mengloop. Node terakhir akan menujuk lagi ke head.


Cara Deklarasi Node Circular Single Linked List

typedef struct TNode{

int data;

TNode *next;

};


DOUBLY LINKED LIST

 

Doubly Linked List adalah Linked List dua arah dimana yang satu berisi refrensi kedata berikutnya dan yang satunya lagi berisi data refrensi berikutnya.


deklarasi Doubly Linked List

struct tnode {

int value;

struct tnode *next;

struct tnode *prev;

};

struct tnode *head = 0;

struct tnode *tail = 0;


Doubly Linked List Insert

 

Pertama-tama kita harus mengalokasikan node baru dan menetapkan nilainya, dan kemudian kita menghubungkan node dengan Linked List yang ada.


Misalnya untuk menambahkan node dibelakang tail

Maka deklarasinya

struct tnode *node =

(struct tnode*) malloc(sizeof(struct tnode));

node->value = x;

node->next = NULL;

node->prev = tail;

tail->next = node;

tail = node;


Misalnya untuk menambahkan node diantara head dan tail

Maka deklarasinya

struct tnode *a = ??;

struct tnode *b = ??;

struct tnode *node =

(struct tnode*) malloc(sizeof(struct tnode));

node->value = x;

node->next = b;

node->prev = a;

a->next = node;

b->prev = node;


Doubly Linked List Delete

 

Ada beberapa kondisi yang harus diperhatikan pada saat menghapus Doubly Linked List

1. Pastikan node yang dihapus adalah satu-satunya node pada Linked List.

2. Node yang dihapus head.

3. Node yang dihapus tail.

4. Node yang dihapus bukan head atau tail.


Jika yang dihapus hanya nodenya maka deklarasinya.

free(head);

head = NULL;

tail = NULL;


Jika yang dihapus hanya head maka deklarasinya.

head = head->next;

free(head->prev);

head->prev = NULL;


Jika yang dihapus hanya tail maka deklarasinya.

tail = tail->prev;

free(tail->next);

tail->next = NULL;


Jika yang dihapus bukan merupakan head ataupun tail maka deklarasinya.

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);


Circural Doubly Linked List

 

konsepnya sama seperti Circular Single Linked List tetapi total pointernya disetiap node terdapat 2.



 
 
 

Comments


About  Me
 

Hello, My name is Antonio Michael Kurniawan. I am currently studying in binus majoring in game application and technology. In this blog I will post about the tasks about data structure.

  • Facebook
  • Twitter

© 2023 by Antonio Michael Kurniawan. Proudly created with Wix.com

Contact

You can contact me via email michaelkurniawan137@gmail.com

Thanks for submitting!

bottom of page