Linked List Bahasa C Beserta Fungsi dan Penjelasannya
// Program Bahasa C untuk
// generic linked list
#include<stdio.h>
#include<stdlib.h>
/* Node linked list */
struct Node
{
// Tipe data apapun dapat
// disimpan pada node ini.
void *data;
struct Node *next;
};
/* Fungsi untuk menambahkan
sebuah node pada bagian awal
dari Linked List. Fungsi ini
menerima sebuah pointer ke
data yang akan ditambahkan
nilai dan ukuran dari tipe
datanya. */
void push(struct Node** head_ref, void *new_data, size_t data_siz)
{
// Alokasi memori untuk node
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = malloc(data_size);
new_node->next = (*head_ref);
// Konten duplikasi dari
// new_data ke alokasi memori
// terbaru.
// Diasumsikan: char
// mengalokasikan memori
// sebesar 1 byte.
int i;
for (i=0; i<data_size; i++)
*(char *)(new_node->data + i) = *(char *)(new_data + i);
// Mengubah pointer head
// sebagai node baru pada
// bagian awal.
(*head_ref) = new_node;
}
/* Fungsi untuk mencetak node
yang diberikan pada linked
list. fpitr digunakan untuk
mengakses fungsi yang akan
digunakan untuk mencetak
nilai node data saat ini.*/
/*Catatan: tipe data yang
berbeda juga membutuhkan
specifier yang berbeda pula
untuk dapat dicetak pada
printf(). */
void printList(struct Node *node, void (*fptr)(void *))
{
while (node != NULL)
{
(*fptr)(node->data);
node = node->next;
}
}
// Fungsi untuk mencetak nilai
// integer.
void printInt(void *n)
{printf(" %d", *(int *)n);}
// Fungsi untuk mencetak
// sebuah float
void printFloat(void *f)
{printf(" %f", *(float *)f);}
/* Program untuk mengetes
fungsi yang dibuat
sebelumnya. */
int main()
{
struct Node *start = NULL;
// Membuat dan mencetak nilai
// integer linked list.
unsigned int_size = sizeof(int);
int arr[] = {10, 20, 30, 40, 50}, i;
for (i=4; i>=0; i--)
push(&start, &arr[i], int_size);
printf("Created integer linked list is \n");
printList(start, printInt);
// Membuat dan mencetak sebuah
// float linked list
unsigned float_size = sizeof(float);
start = NULL;
float arr2[] = {10.1, 20.2, 30.3, 40.4, 50.5};
for (i=4; i>=0; i--)
push(&start, &arr2[i], float_size);
printf("\n\nCreated float linked list is \n");
printList(start, printFloat);
return 0;
}
Output:Created integer linked list is
10 20 30 40 50
Created float linked list is
10.100000 20.200001 30.299999 40.400002 50.500000
Struktur Node dalam Linked List
Fungsi-Fungsi dalam Linked List
- Penambahan Node (Insertion): Penambahan node merupakan salah satu operasi utama dalam linked list. Node baru dapat ditambahkan di awal, tengah, atau akhir list. Dalam penambahan di awal, node baru dibuat dan pointer-nya diarahkan ke node pertama yang sudah ada. Proses ini relatif cepat karena hanya melibatkan perubahan pointer. Untuk menambahkan node di akhir, traversal diperlukan untuk menemukan node terakhir, sehingga pointer-nya dapat diarahkan ke node baru. Proses ini membutuhkan waktu lebih lama karena melibatkan iterasi.
- Penghapusan Node (Deletion): Penghapusan node juga menjadi fitur penting dalam linked list. Node yang dihapus bisa berada di awal, tengah, atau akhir list. Untuk menghapus node di awal, pointer head cukup diarahkan ke node berikutnya. Penghapusan di tengah atau akhir memerlukan traversal untuk menemukan node yang tepat, diikuti dengan pembaruan pointer agar node sebelumnya mengarah ke node setelahnya, melewati node yang dihapus.
- Pencarian Node (Search): Fungsi pencarian digunakan untuk menemukan node dengan nilai tertentu. Proses ini melibatkan iterasi dari node pertama hingga node terakhir, membandingkan nilai di setiap node dengan nilai yang dicari. Meskipun proses ini sederhana, waktu yang dibutuhkan bersifat linear (O(n)), yang berarti semakin banyak node dalam list, semakin lama waktu yang dibutuhkan untuk pencarian.
- Traversal: Traversal adalah proses untuk mengunjungi setiap node dalam linked list, biasanya untuk membaca atau memproses data. Fungsi ini berguna dalam berbagai kasus, seperti menampilkan isi linked list atau melakukan operasi pada setiap elemen. Traversal dilakukan dengan iterasi dari node pertama hingga node terakhir, menggunakan pointer untuk berpindah dari satu node ke node berikutnya.
- Penghitungan Panjang Linked List: Fungsi untuk menghitung panjang linked list sering kali diperlukan dalam implementasi. Fungsi ini bekerja dengan cara iterasi melalui seluruh node dalam list dan menghitung jumlah node yang dilewati. Meskipun sederhana, fungsi ini sangat berguna untuk memastikan integritas linked list dalam aplikasi yang lebih kompleks.
- Pembuatan Linked List Kosong: Sebelum menggunakan linked list, diperlukan fungsi untuk menginisialisasinya. Biasanya, linked list diinisialisasi sebagai kosong dengan menetapkan pointer kepala (head) ke NULL. Pendekatan ini memastikan linked list siap digunakan dan tidak mengandung data yang tidak valid.
- Pengurutan Node (Sorting): Dalam beberapa kasus, linked list perlu diurutkan berdasarkan nilai data. Pengurutan dalam linked list dapat dilakukan menggunakan algoritma seperti bubble sort atau merge sort. Proses ini lebih kompleks dibandingkan pengurutan array karena melibatkan perubahan pointer di setiap node.
Keunggulan Linked List dalam Bahasa C
Kelemahan Linked List dalam Bahasa C
Kesimpulan
- Struct Bahasa C dan Penjelasannya
- Union Bahasa C dan Penjelasannya
- Struct Hack Bahasa C dan Penjelasannya
- Anggota Structure, Padding, dan Data Packing Bahasa C
- Operasi Pada Variabel Struct Bahasa C
- Bit Fields Bahasa C Beserta Penjelasannya
- Anggota Array Fleksibel Struct Pada Bahasa C
5 komentar untuk "Linked List Bahasa C Beserta Fungsi dan Penjelasannya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
Apa yang dimaksud dengan linked list pada bahasa C?
BalasHapusLinked list pada bahasa C merupakan bentuk struktur data linier, dimana setiap linked list memiliki dua bagian, yaitu bagian data dan bagian alamat yang menyimpan alamat elemen berikutnya dalam suatu daftar tertentu, yang disebut dengan node.
HapusLinked list bahasa C merupakan urutan struktur data yang berhubungan satu sama lain melalui suatu tautan tertentu.
HapusLinked list merupakan urutan link berisi item-item data.
HapusSetiap tautan linked list pada Bahasa C berisi koneksi ke tautan lainnya, dimana linked list tersebut paling banyak digunakan setelah penggunaan array pada bahasa C.
Hapus