Linked List1
Linked List1
Dalam dunia komputer, linked list banyak secara ekstensif digunakan didalam sistem
manajemen database, manajemen proses, sistem operasi, editor dan lain sebagainya. Apabila
menggunakan array untuk menempatkan beberapa buah struktur sejenis (array of structure) di
memori, maka akan dialokasikan dengan cara statis. Artinya, apabila dideklarasikan dengan 10
buah elemen, maka ukuran memori yang akan dialokasikan di memori adalah 10 dikalikan
dengan ukuran struktur yang didefinisikan sebelumnya. Hal yang perlu ditekankan disini
adalah apabila ternyata hanya melakukan pengisian terhadap array tersebut hanya 5 elemen,
maka memori yang dialokasikan tetap untuk 10 buah elemen. Ini jelas merupakan pemborosan
memori yang harus dihindari dalam pembuatan program. Oleh karena itu, untuk membuat
pekerjaan ini menjadi dinamis maka pra programmer pada umumnya menggunakan linked list
sehingga pengalokasian memori dapat sesuai dengan kebutuhan. Selain itu dengan
menggunakan cara ini juga dapat menambahkan atau menghapus elemen yang terdapat pada
linked list tersebut.
Menurut definisinya, linked list adalah sebuah rangkaian struktur sejenis (bertipe sama) yang
dihubungkan dengan menggunakan salah satu (beberapa) field yang bertipe pointer.
Pendefinisan struktur harus dipahami sebelumnya untuk mengerti tentang linked list.
Struct node {
Int data;
Struct node *p;
};
Pada baris diatas ada sebuah struktur dengan nama node, dimana di dalamnya terdapat 2 buah
field yaitu data (bertipe int) dan p(bertipe pointer ke struktur node). Field data yang akan
digunakan untuk menyimpan nilai, sedangkan pointer p akan digunakan untuk menyimpan
alamat dari struktur node lainnya yang terdapat pada rangkaian.
//definisikan fungsi untuk meletakan atau mengisikan struktur node ke dalam stack
int main(void) {
struct node *paling_atas; //pointer ini akan selalu menunjuk ke elemen paling atas
//melakukan inisialisasi terhadap pointer paling_atas dgn NULL
paling_atas =NULL; //mula-mula stack dalam keadaan kosong
//tampilkan struktur node yang ada didalam stack dengan fungsi pop
while (paling_atas != NULL) {
paling_atas=paling_atas->p; //menunjukkan ke elemen dibawahnya
printf("%d\n",*paling_atas);
}
return 0;
}
Hasil output yang diberikan adalah :
Untuk inisialisasi list setelah alokasi node pertama ilustrasi adalah sebagai berikut :
Fungsi free_node() menggunakan memori dinamis dengan fungsi free(). Fungsi free() akan
menghancurkan node yang menunjuk ke pointer yang dilewati sehingga tempat yang ada
dipakai untuk lainnya. Akan tetapi pointer yang akan melewati free() tidak otomatis menjadi
null namun akan menunjuk ke node yang sudah tidak ada. Kaerna itu pointer harus
didefinisikan dengan NULL.
Void free_node(list p_L){
Free(p_L); p_L=NULL; }
Latihan :
Buatlah suatu menu yang berisi Keluar, Insert, Search dan Tampilkan. Semua harus
dimasukkan melalui keyboard. Gunakan single linked list untuk mengerjakannya. Berikut hasil
dari tampilan output :