๐ Daftar Isi
Deklarasi
Deklarasi single linked list ini diawali dengan membuat setiap node dimana setiap node akan berbentuk struct dan memilili satu buah field bertipe struct yang sama yang berfungsi sebagai pointer.
#include <stdio.h>
struct mahasiswa
{
char nim[25];
char nama[25];
int usia;
};
Deklarasi dan akses:
struct mahasiswa mhs1;
struct mahasiswa mhs1 = {100, "Stat", 19};
printf ("%s", mhs1.nama);
Variabel pointer (yang menyimpan alamat memory struct)
struct mahasiswa mhs1, *p_mhs1;
struct mahasiswa mhs1 = {100, "Stat", 19};
p_mhs1 = &mhs1;
printf("%s", p_mhs1->nim);
printf("%s", p_mhs1->nama);
Setiap node akan berbentuk struct dan memiliki satu buah field bertipe struct yang sama berfungsi sebagai pointer.
struct node
{
int data;
struct node *next;
}
*next pada struct di atas akan menyimpan alamat node setelahnya yang juga bertipe struct node, maka pointer next juga harus bertipe sama.
Perlu diingat bahwa pointer harus bertipe sama dengan alamat yang ditunjuk.
Membuat Node Menggunakan Alokasi Memory Dinamis
struct mynode
{
int data;
struct mynode *next;
}
struct mynode *head = NULL;
struct munode *second = NULL;
head = (struct mynode*)malloc(sizeof(struct mynode));
second = (struct mynode*)malloc(sizeof(struct mynode));
head->data = 1;
head->next = second;
second->data = 2;
second->next = NULL;
- Pertama membuat yaitu membuat struktur. Struktur ini bisa disimpan sebagai global atau lokal
- Node head = NULL menunjukkan linked list masih kosong
- Alokasikan memory secara dinamis dengan malloc
- Isi elemen data dan pointer next disetiap node
- Akhir sebuah list (pointer node terakhir mengarah ke NULL)
Membuat Linked List
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
struct node *head = NULL;
struct node *dua = NULL;
struct node *tiga = NULL;
head = (struct node*)malloc(sizeof(struct node));
dua = (struct node*)malloc(sizeof(struct node));
tiga = (struct node*)malloc(sizeof(struct node));
head->data = 10;
head->next = dua;
dua->data = 20;
dua->next = tiga;
tiga->data = 30;
tiga->next = NULL;
printf("Isi dari linked list :\n");
struct node *n = head;
while (n != NULL)
{
printf("%d\n", n->data);
n = n->next;
}
return 0;
}
Output:
Isi dari linked list:
10
20
30
Iterasi setiap node dalam sebuah linked list:
node n;
n = head;
while (n != NULL)
{
...
n = n->next;
}
node n adalah node bantuan. Lakukan printf() field data dari setiap node dari head, node berikutnya, dan seterusnya sampai node tersebut NULL.
Apabila jumlah node dalam sebuah linked list ditentukan secara dinamis (misal dari input user), tidak ditentukan di awal. Bagaimana cara membentuk linked list?
Contoh statis (tidak dinamis) adalah ketika dideklarasikan secara statis 3 buah node dalam linked list tersebut
struct node *head = NULL;
struct node *dua = NULL;
struct node *tiga = NULL;
head = (struct node*)malloc(sizeof(struct node));
dua = (struct node*)malloc(sizeof(struct node));
tiga = (struct node*)malloc(sizeof(struct node));
Penggunaan Typedef
struct node
{
int value;
struct node *next;
};
typedef struct node *mynode;
typedef digunakan untuk mendefiniskan tipe data baru atau memberi alias/nama baru suatu tipe data.
- Coding lebih rapi/bersih (menyederhanakan tipe data yang panjang dan complex)
- Tidak perlu menuliskan struct di semua tempat
Contoh lain penggunaan typdef
typedef unsigned char HURUF;
HURUF b1, b2;
typedef long long int LLI;
int x = sizeof(LLI);
Fungsi Untuk Membuat Node
mynode createnode(int nilai)
{
mynode p;
p = (mynode)malloc(sizeof(struct node));
p->value = nilai;
p->next = NULL;
return(p);
}
Bagaimana jika tidak mendeklarasikan typedeft struct node *mynode?
struct node* createnode(int nilai)
{
struct node* p;
p = (struct node*)malloc(sizeof(struct node));
p->value = nilai;
p->next = NULL:
return(p)
}
Fungsi free() Pada Linked List
Kegunaan dari free() adalah untuk membebaskan memoryy yang dialokasikan untuk node tersebut
void free_node(mynode node)
{
free(node);
}
Materi Lengkap
Silakan baca juga beberapa artikel menarik kami tentang Single Linked List, daftar lengkapnya adalah sebagai berikut.