Week 4 – Linked List

Linked List

  1. Refresh Memory Allocation
  2. Pengertian Linked List
  3. SLL : LIFO & FIFO
  4. Menghapus Linked List

Pembahasan no. 1

Memory dibagi dua :

  1. Heap
    Bersifat dinamic, jadi programmer yang pesan memory dengan malloc. Kelemahannya yaitu kemungkinan bisa kehabisan memory.
  2. 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 :

  1. Informasi mengenai elemen (Info)
  2. 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)

Week 3 – Abstract Data Type ;>

  • Tipe data yaitu sekumpulan data yang memenuhi spesifikasi data dan operasi yang boleh dilakukan untuk data tersebut.
  • Struktur Data:
    • Teknik penyimpanan data dalam memori komputer, sehinnga data bisa digunakan dengan efisien.
    • Struktur Data dasar biasanya hanya berupa array, record, union dan pointer (reference).
  • Kumpulan character: field.
    • Kumpulan field: record.
      • Kumpulan record: table/file.
        • Kumpulan table/file: database.
  • Record sama dengan struct pada C (kumpulan field-field).
  • Abstract Data Type adalah suatu tipe data yang diatur sehingga spesifikasi data dan operasi terpisah dari representasi (interface) dan implementasinya. Abstract Data Type berisikan banyak tipe data standar, misalnya float, int, atau char.
  • Implementasi Abstract Data Type dapat dilakukan dengan list, stack, queue, tree, atau graph.
  • Operasi-operasi yang dapat dilakukan untuk membuat list:
    • createlist(size): untuk membuat suatu daftar dengan ukuran size.
    • insert(a,baru): menambahkan data baru pada a.
    • search(a,key): pencarian pada a dengan nilai key. mengembalikan posisi record bila ditemukan dan -1 bila tidak.
    • sizelist(a): menghitung dan mengembalikan nilai berupa jumlah data
    • clearlist(xyz): menghapus seluruh data pada daftar xyz
    • printlist(a): menampilkan seluruh data pada daftar a.
  • typedef pada C digunakan untuk memberikan nama alternatif pada tipe data.
    • Misalnya: typedef int integer; integer a;
    • Sama halnya dengan: int a;