Linked list adalah struktur data berupa deret data yang dinamis, karena dapat ditambahkan
ataupun dihapus. Lebih rinci lagi:
- linked list terdiri dari rantai node/ simpul dimana tiap node terdiri dari data, pointer yang merujuk data node-nya sendiri dan pointer merujuk pada node yang mengikutinya.
- Linked list memilki head/ kepala (node awal) dan tail/ekor (node akhir). Karena tail adalah node akhir, dengan demikian, dalam node tail, pointer yang merujuk pada node selanjutnya adalah samadengan NULL.
- Jika linked list hanya terdiri dari satu node, maka, dalam node tersebut, pointer yang merujuk pada node selanjutnya adalah samadengan NULL.
Tahapan pada linked list adalah sebagai berikut.
- Deklarasi linked list, yang terdiri dari definisi node dan definisi list
- Mengalokasikan memori terhadap setiap node
- Mengisi data pada setiap simpul atau node
- Menyambungkan setiap link dari simpul
- Menampilkan hasilnya
Untuk selengkapnya dapat melihat video ini.
Potongan source codenya seperti di bawah ini. :)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct simpul
{
char nama[20];
float nilai;
struct simpul *next_simpul;
}simpulku;
void main()
{
simpulku *simpul1, *simpul2, *simpul3, *simpul4, *temp;
//alokasikan memori terlebih dahulu
simpul1 = (simpulku *)malloc(sizeof(simpulku));
simpul2 = (simpulku *)malloc(sizeof(simpulku));
simpul3 = (simpulku *)malloc(sizeof(simpulku));
//isi data dari masing2 simpul
strcpy(simpul1->nama, "Amin");
strcpy(simpul2->nama, "Budi");
strcpy(simpul3->nama, "Citra");
simpul1->nilai=90;
simpul2->nilai=20;
simpul3->nilai=100;
simpul1->next_simpul = NULL;
//sambungkan link masing2 simpul
simpul1->next_simpul = simpul2;
simpul2->next_simpul = simpul3;
simpul3->next_simpul = NULL;
//tampilkan hasilnya, mulai dari simpul 1
temp = simpul1; //cara satu per satu
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul; //simpul 2
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul; //simpul 3
printf("%s, %f\n", temp->nama, temp->nilai);
printf("\n");
//skenario menambahkan simpul baru
simpul4 = (simpulku *)malloc(sizeof(simpulku)); //siapkan
strcpy(simpul4->nama, "Dewi"); //isi nama
simpul4->nilai=80; //isi nilai
simpul2->next_simpul = simpul4; //update link
simpul4->next_simpul = simpul3;
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
//menghapus simpul2 -> Budi
simpul1->next_simpul = simpul4; //update link
free(simpul2); //hapus simpul
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
system ("pause");
return 0;
}
Semoga bermanfaat. :)
No comments:
Post a Comment