Linked List
- Refresh Memory Allocation
- Pengertian Linked List
- SLL : LIFO & FIFO
- Menghapus Linked List
Pembahasan no. 1
Memory dibagi dua :
- Heap
Bersifat dinamic, jadi programmer yang pesan memory dengan malloc. Kelemahannya yaitu kemungkinan bisa kehabisan memory. - Array
Bersifat static, lebih “mudah” karena compiler yang cari tempat di memory.
Pembahasan no. 2
Linked List adalah sekumpulan elemen bertipe sama yang mempunyai keterurutan tertentu, dan setiap elemen terdiri atas dua bagian, yaitu :
- Informasi mengenai elemen (Info)
- Informasi mengenai alamat elemen suksesor (Next)
Elemen pertama, biasanya melalui alamatnya disebut First.
Alamat elemen berikutnya (suksesor), dapat diakses melalui Next.
Setiap elemen list mempunyai alamat (address) untuk mengacu sebuah elemen.
Dan ada elemen terakhirnya.
Pembahasan no. 3
Pada Single Linked List, biasa menggunakan istilah node, head, dan tail.
Node : kombinasi data dan pointer,
Head : node yang pertama,
Tail : node yang terakhir (biasa untuk FIFO)
Contoh deklarasi sebuah linked list data
struct data{
int tgl,bln,thn;
char ket[100];
struct data *next;
};
Contoh deklarasi pointer penunjuk awal Linked List (LL)
struct data *head, *node, *tail;
FIFO dan LIFO
Untuk FIFO, list yang pertama kali diinput akan diprint pertama kali di output.
Teorinya, kita akan menggunakan dua variabel sebagai penanda dua variabel tersebut adalah head dan tail. Head adalah penanda node pertama sedangkan tail sebagai penanda node terakhir.
Penggunaan FIFO
Idenya saat FIFO, pada input data pertama head dan tail akan berada di node yang sama, ketika input kedua hingga ke-n variabel tail yang akan berpindah-pindah.
Contoh penggunaan algoritma dalam bentuk potongan code
if(head==NULL){
head=node;
tail=node;
}
else{
tail->next=node;
tail=node;
node->next=NULL; //line ini ditulis apabila node->next belum ditulis di atas
}
Penggunaan LIFO
Idenya saat LIFO kita hanya memindahkan “kepala” dari linked list, karena head lah yang akan diprint pertama.
Contoh penggunaan algoritma dalam bentuk potongan code
if(head==NULL){
head=node;
}
else{
node->next=head;
head=node;
}
Pembahasan no.4
Menghapus linked list
Tujuan dari menghapus linked list adalah untuk menghemat memory, pada saat pindah perpindahan data biasanya akan meninggalkan sebuah memory jika tidak dilepas/dihapus memorynya akan memenuhi kapasitas memory mengakibatkan program memakai resource memory secara berlebihan.
Untuk menghapus linked list bisa menggunakan contoh function dan juga harus menambahkan sebuah function dari stdlib.h yang bernama free contoh deklarasinya dibawah ini :
void del(struct tglnode **head){
struct tglnode *curr;
while (*head != NULL){
curr=*head;
*head=(*head)->next;
free(curr);
}
*head =NULL;
}
Dibuat oleh :
Yuriandhika Zafaridho (14110110001)
Naufal Irfan Hayanto (14110110017)
Kevin Lionery (14110110020)