Tuesday, March 3, 2020

Rangkuman Single Linked List

Perbedaan Linked List dengan Array adalah data array bisa diakses langsung:
Contoh:
[A][B][C][D][E]
[0][1][2][3][4]
Jika kita minta data ke 3, maka diberi "D".

Sedangkan jika linked list harus dimulai dari awal:
[0][1][2][3]
[A][B][C][D]
Jika kita minta node ke 3, maka diberi "A","B",C","D"

Didalam Linked List, ada istilah head and tail, yaitu awal dan akhir dari linked list tersebut.

Lalu, dalam Linked List, diperlukan adanya memory allocation. Jika array kita set berapa isinya, di Linked List harus membuat linked list baru di alokasikan memorynya.

Lalu, untuk melepas alokasi memory, diperlukan penggunaan free, tidak seperti array yang hanya dibiarkan saja elemen datanya kosong.

Pembuatan linked list memerlukan penggunaan data type struct.
Contoh:
struct LinkedList {
 int value;
struct LinkedList *next;
}; *head, *tail = 0;

Untuk memasukkan data selanjutnya diperlukan, diperlukan penambahan malloc.
Contoh:
struct LinkedList *node = (struct LinkedList*) malloc(sizeof(struct LinkedList));
node->value=5;
node->next=head;
head = node;

Jika ingin menghapus, menggunakan function ini:
if ( head->value == x ) {  head = head->next;  free(curr);
};else {  while ( curr->next->value != x ) curr = curr->next;  struct tnode *del = curr->next;  curr->next = del->next;  free(del);};


Untuk memprint Linked List, menggunakan:
struct LinkedList* value = head;
while (value)
{
printf("%d -> ", value->data);
value = value->next;
}

Untuk function push, bisa menggunakan:
newNode->data = data;
newNode->next = *head;
*head = newNode;
}

Lalu, untuk pop, bisa menggunakan:
if (*headRef == NULL)
return -1;
struct LinkedList* head = *headRef;
int result = head->data;
(*headRef) = (*headRef)->next;
free(head);
return result;

Reference:
https://www.techiedelight.com/pop-operation-in-linked-list/
Ppt Dastruct

No comments:

Post a Comment