by William Kurnia
Mulyadi Putra/2301887521
1. Pengenalan Linked
List
Berdasrkan
yang telah saya pelajari saya dapat menyimpulkan bahwa linked list suatu metode
yang digunakan untuk menggantikan array agar menjadi lebih hemat memory. Linked
list pada bahasa C dapat dibuat menggunakan struct{};
2. Perbedaan Linked List
dengan Array
keunggulan
linked list dengan array :
- Linked list merupakan dynamic programming, artinya
memory yang diperlukan sesuai dengan yang digunakan, sehingga linked list
lebih hemat memory.
- Memory yang diperlukan dapat dialokasikan pada saat
program sedang berjalan, sedangkan memory yang diperlukan oleh array perlu
dialokasikan sebelum program dicompile.
kelemahan linked list
terhadap array :
- kita tidak dapat melakukan random access pada saat
menggunakan linked list, misanya :
tertdapat program :
#include <stdio.h>
int main (){
int
array[5] = {1,2,3,4,5};
//jika ingin mengubah array pada index kedua
maka dapat dilakukan random //acces
Array[2] = 0;
//sehingga anggota array berubah menjadi
{1,2,0,4,5};
Tetapi dalam menggunakan linked list, kita
harus mengkases anggota dimulai dari anggota terawal dan mengkases satu demi
satu sampai mendapatkan anggota tujuan.
3. Cara Membuat Linked
List Menggunakan Bahasa C
Dalam bahasa C linked list dibuat dengan
cara membuat sebuah struct{}; . Pada umumnya struktur linked list terdiri atas
dua :
-
data yang disimpan
linked list
-
pointer ke listnode
selanjutnya
dalam bentuk kode ;
#include <stdio.h>
struct node {
//data node
node *next_node;
};
Setiap individu struct
pada suatu linked list dinamakan node. Node terdepan pada suatu linked list diberikan
nama head, sedangkan node terbelakang
pada suatu linked list dinamakan tail.
Hal – hal yang dapat dilakukan pada suatu linked list adalah menambahkan data
dan menghapus data.
Cara memasukkan data di
linked list terbagi menjadi 3 cara :
-
memasukkan data pada
awal linked list
sebagai contoh, terdapat kode seperti berikut :
#include<stdio.h>
struct node {
int data;
node *next;
};
int main (){
int input;
struct node *head =
NULL;
struct node
*tail = NULL;
printf("Inset data ==> ");
scanf("%d",
&input);getchar();
push_head(&head, input, &tail);
return 0;
}
Maka untuk melakukan penambahan data pada head linked list :
void push_head (struct node **head, int value, struct node
**tail){
node *temp =
(node*)malloc(sizeof(struct node));
temp->data =
value;
if(*head == NULL){
temp->next
= NULL;
*head =
temp;
*tail =
temp;
}else{
temp->next
= *head;
*head =
temp;
}
}
-
memasukkan data pada
akhir linked list
sebagai contoh, terdapat kode seperti berikut :
#include<stdio.h>
struct node {
int
data;
node
*next;
};
int main (){
int input;
struct
node *head = NULL;
struct
node *tail = NULL;
printf("Inset data ==> ");
scanf("%d", &input);getchar();
push_tail(&head, input, &tail);
return
0;
}
Maka untuk melakukan penambahan data pada tail
linked list :
void push_tail(struct node **head, int value, struct node **tail){
node *temp =
(node*)malloc(sizeof(struct node));
temp->data =
value;
if(*head == NULL){
temp->next
= NULL;
*head =
temp;
*tail =
temp;
}else{
node *prev
= *tail;
temp->next
= NULL;
prev->next
= temp;
*tail =
temp;
}
}
Cara menghapus data pada
suatu linked list :
Sebagai contoh, terdapat kode seperti berikut :
#include<stdio.h>
struct node {
int
data;
node
*next;
};
Terdapat linked list berisis 1à2à3à4à5àNULL.
Maka kode untuk menampilkan isi linked list pada
console adalah :
void display(struct node *current){
if(current
== NULL){
printf("Empty
list\n");
}else{
while(current!=NULL){
printf("%d-->",
current->data);
current
= current->next;
}
printf("[NULL]\n");
}
}
Maka output yang ditampilkan pada console adalah
:
1-->2-->3-->4-->5-->[NULL]
4. Jenis-Jenis Linked List
terdapat 4 jenis linked list yaitu :
- singly linked list -> merupakan linked list dimana setiap node hanya terhubung dengan node selanjutnya dan node terakhir memiliki pointer NULL.
- doubly linked list -> merupakan linked list dimana setiap node hanya terhubung dengan node selanjutnya dan node sebelumnya. Node terakhir memiliki pointer NULL.
-circular linked list -> merupakan linked list dimana setiap node hanya terhubung dengan node selanjutnya dan node terakhir memiliki pointer yang menunjuk ke node pertama.
-circular doubly linked list -> merupakan linked list dimana setiap node hanya terhubung dengan node selanjutnya dan node sebelumnya. Node terakhir memiliki pointer yang menunjuk ke node pertama.
sumber :
No comments:
Post a Comment