Linked list merupakan struktur data (bertipe sama, Lihat: Struct (Struktur) dalam Bahasa C) yang terdiri sekumpulan node yang secara bantu-membantu merepresentasikan sebuah urutan. Linked list juga disebut sebuah metode untuk menyimpan data dengan struktur sehingga sanggup secara otomatis membuat suatu daerah di memory untuk menyimpan data yang dibutuhkan.
Ada beberapa Jenis dari linked list, Antara Lain:
- Single linked list
- Double linked list
- Circular linked list
Ilustrasi Struktur Linked List:
Pada gambar diatas kita mempunyai 4 buah Struktur node, yang masih-masing menyimpan data dengan nilai 10, 20, 30 dan 40. Pointer P yang terdapat pada Struktur node ke-1 berisi alamat dari Struktur node ke-2, Pointer P yang ada pada Struktur node ke-2 berisi alamat dari Struktur node ke-3, dan Pointer P yang ada pada Struktur node ke-3 berisi alamat dari Struktur node ke-4, Sedangkan Pointer P yang terdapat di struktur node ke-4 akan berisi NULL, hal ini menawarkan bahwa struktur node ke-4 berada di tamat rangkaian.
Struktur Node sendiri elemennya sanggup di ilustrasikan sebagai berikut (Lihat: Struct (Struktur) dalam Bahasa C):
Struktur node{
int data;
struktur node *p;
};
Menurut cara pengisian dan pengambilan elemennya, linked list dibagi menjai 2 macam:
Contoh Program Sederhana Linked List Dalam Bahasa C
#include <stdio.h>
#include <stdlib.h>
struct NODE {
int number;
struct NODE *next;
};
void append_node(struct NODE *llist, int num);
int search_value(struct NODE *llist, int num);
void display_list(struct NODE *llist);
int main(void) {
int num = 0;
int input = 5;
int retval = 0;
struct NODE *llist;
llist = (struct NODE *)malloc(sizeof(struct NODE));
llist->number = 0;
llist->next = NULL;
while(input != 0) {
printf("\n===== Pilih Menu =====\n");
printf("0: Keluar\n");
printf("1: Insert\n");
printf("2: Search\n");
printf("3: Tampilkan\n");
printf("\nPilihan: ");scanf("%d", &input);
if(input==0){
printf("...Terimakasih...\n");
}
else if(input==1){
printf("Anda Memilih: 'Insert'\n");
printf("Masukkan Nilai Yang Akan di Insert: ");
scanf("%d", &num);
append_node(llist, num);
}
else if(input==2){
printf("Anda Memilih: 'Search'\n");
printf("Masukkan Nilai Yang Akan di Cari (Search): ");
scanf("%d", &num);
if((retval = search_value(llist, num)) == -1)
printf("Value `%d' not found\n", num);
else
printf("Value `%d' located at position `%d'\n", num, retval);
}
else if(input==3){
printf("Anda Memilih: 'Tampilkan'\n");
display_list(llist);
}}
free(llist);
return(0);
}
void append_node(struct NODE *llist, int num) {
while(llist->next != NULL)
llist = llist->next;
llist->next = (struct NODE *)malloc(sizeof(struct NODE));
llist->next->number = num;
llist->next->next = NULL;
}
int search_value(struct NODE *llist, int num) {
int retval = -1;
int i = 1;
while(llist->next != NULL) {
if(llist->next->number == num)
return i;
else
i++;
llist = llist->next;
}
return retval;
}
void display_list(struct NODE *llist) {
while(llist->next != NULL) {
printf("%d ", llist->number);
llist = llist->next;
}
printf("%d", llist->number);
}
Linked List Dalam Bahasa C
MARKIJAR: MARi KIta belaJAR