Linked List
atau dikenal juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya.
Link List memiliki sekumpulan node/data yang tersusun secara sekuensial, saling menyambung dan dinamis. Sekumpulan node tersebut dihubungkan dengan pointer. Pada praktiknya sebuah struktrur data memiliki elemen yang digunakan untuk saling menyimpan rujukan antara satu dengan yang lainnya sehingga membentuk sebuah senarai abstrak, tiap-tiap elemen yang terdapat pada senarai abstark ini seringkali disebut sebagai node. karena mekanisme rujukan yang saling terkait inilah disebut sebagai senarai berantai (Linked List).
Keunggulan linked list yaitu dapat menggunakan memory sesuai kebutuhan dan tidak dapat overflow kecuali jika memory komputer habis. Beda halnya dengan jika kita mendeklarasikan sebuah array, pada array memory baik kita gunakan atau tidak sejumlah blok yang telah dipesan melalui deklarasi tersebut tidak dapat digunakan, dan jika data yang kita masukkan lebih besar dari jumlah data yang dideklarasikan akan terjadi overflow.
Linked List dibedakan menjadi 3:
1. Single Linked List
2. Double Linked List
3. Circular Linked List
I. Single Linked List
adalah sekumpulan dari node yang saling terhubung dengan node lain melalui sebuah pointer. Rangkaian single linked list tersebut diawali dengan sebuah head untuk menyimpan alamat awal dan di akhiri dengan node yang mengarah ke pointer null. Single Linked List hanya memiliki satu arah dan tidak memiliki dua arah atau bolak balik.
*pointer head menunjuk pada node berisi data 12 dan tail menunjuk pada node berisi data 37
Di dalam linked list terdapat properties yang umum yaitu: insert node dan delete node.
contoh codingannya:
struct Mhs{
char name[20];
int age;
struct Mhs *next;
}*head,*tail;
II. Double Linked List
merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke null.

Berbeda halnya dengan Single Linked List, pada Double Linked List, struktur data atas tiap-tiap node memiliki rujukan pada node sebelum dan berikutnya. Sebagian algoritme membutuhkan taut ganda, contohnya sorting dan reverse traversing.
contoh codingannya:
struct Mhs{
char name[20];
int age;
struct Mhs *next,*prev;
}*head,*tail;
III. Circular Linked List
merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk null. Ada 2 jenis Circular Linked List, yaitu:
- Circular Single Linked List
- Circular Double Linked List
Contoh Coding (Tugas GSLC Aplikasi Minimarket):
https://drive.google.com/file/d/1hS5nfHqtZnvO2EaxQ4r0tRbZ94NUNJ9X/view
Reference:
1. http://t-edukasi.blogspot.com/2018/01/materi-dan-pengertian-linked-list-atau.html
2. http://www.nblognlife.com/2014/12/single-linked-list-pada-c.html
3. https://id.wikipedia.org/wiki/Senarai_berantai
4. https://medium.com/codelabs-unikom/struktur-data-single-linked-list-93bbd56b6ed1
5. http://jagocoding.com/tutorial/245/Tutorial_Single_Linked_List
Hash Table and Binary Tree
I. Hashtable
Merupakan
sebuah struktur data yang digunakan untuk menyimpan key data dan value
(seperti di kamus). Terdiri atas sebuah tabel dan fungsi yang bertujuan
memetakan nilai kunci yang unik untuk setiap record (baris) menjadi
angka (hash) lokasi record tersebut dalam sebuah tabel.
Keunggulan hashtable adalah waktu aksesnya yang cepat, jika record yang dicari langsung berada pada angka hash lokasinya.
Operasi Pada Hash Tabel
* Insert: Diberikan sebuah key dan nilai, insert nilai dalam tabel.
* Find: Diberikan sebuah key, temukan nilai yang berhubungan dengan key.
* Remove: Diberikan sebuah key, temukan nilai yang berhubungan dengan key, kemudian hapus nilai.
* getIterator: Mengembalikan iterator, yang memeriksa nilai satu demi satu
Contoh coding:
typedef struct hashtbl {
hash_size size;
struct hashnode_s **nodes;
hash_size (*hashfunc) (const char *);
}HASHTBL;
struct hash_node_s{
char *key;
void *data;
struct hashnode_s *next;
};
Penggunaan hashtable diantaranya: mengindex database, caching, program comparator, error checking, dan password authenticator.
II. Binary Tree
adalah
tree dengan syarat tiap nodenya hanya boleh memiliki maksimal dua
subtree dan kedua subtree tersebut harus terpisah. Tiap node dalam
binary tree hanya boleh memiliki paling banyak dua anak simpul. Pohon
biner adalah sebuah pohon dalam struktur data yang sifatnya hirarkis
(hubungan satu ke banyak).
Binary
tree dapat juga disimpan sebagai struktur data implisit dalam array,
dan jika pohon tersebut merupakan sebuah pohon bner lengkap, metode ini
tidak boros tempat.
Sumber:


