Linked List Animasi
Linked List Animasi
Entin Martiana
Malloc
Memory Allocation (malloc) adalah sebuah fungsi fasilitas untuk memesan tempat secara berurutan untuk tipe data dinamis(pointer) Nilai balik dari memory allocation adalah void *
Problem
Bagaimana jika kita pesan 50000 alamat berurutan?
Akan selalu gagal. Untuk itu kita lakukan memory allocation untuk setiap satu data.
Array
node
linked
Linked list
Linked lists are unbounded (maximum number of items limited only by memory)
A[2]
A[1] A[0] A(data 2) A(data 1)
Linked lists are unbounded (maximum number of items limited only by memory)
Deklarasi
struct simpul { char nama[25]; int nrp; struct simpul *next; }; struct simpul *ujung;
simpul
nama
data
nrp
next
Bagaimana?
1. 2. 3. 4. 5. struct simpul *ujung; ujung=(struct simpul*)malloc(sizeof(struct simpul)); printf("Nama :");scanf("%s",&ujung->nama); printf("NRP :");scanf("%d",&ujung->nrp); if(j==0) { ujung ujung->next=NULL; tampung=ujung; nama1 }
tampung
nrp1 next
NULL
Selanjutnya
ujung
1. 2. 3. 4.
nama2
nrp2 next
}
ujung tampung tampung
Selanjutnya
ujung
1. 2. 3. 4.
nama3
nrp3 next
}
ujung tampung tampung
Membaca (Menampilkan)
ujung
NULL tampil
tampil = ujung;
while (tampil<>NULL) // fungsi menampilkan tampil = tampil -> next;
cari = ujung;
while (cari->nama!=nama2) { cari = cari->next;
cari = ujung
namax
nrpx next
NULL
hapus = ujung;
sbl->next=hapus->next;
free(hapus);
baru
cari = ujung
namax nrpx
next
while (cari->nama!=nama3)
cari = cari->next; baru->next = cari->next;
namax nrpx
next
namax
cari->next = baru;
nrpx
next
baru
cari = ujung
namax nrpx
next
cari = ujung;
while (cari->nama!=nama1) stl=cari; cari=cari->next;
namax nrpx
next
cari = ujung;
while (cari->nama!=nama1) stl=cari; cari=cari->next;
namax nrpx
next
NULL
cari = ujung;
while (cari->nama!=nama1) stl=cari; cari=cari->next;
namax nrpx
next
NULL
baru->next = cari;
namax nrpx
next
NULL
stl->next = baru;
namax nrpx
next