Posts

Showing posts from 2020

FINAL SUMMARY

Image
LINKED LIST 1. Circular Single Linked List Di circular single linked list, node terakhir (tail) berisikan sebuah pointer yang terhubung ke node pertama (head), sehingga membentuk sebuah sirkuit, yang berarti tidak ada awal maupun akhir dan tidak ada NULL setelah node manapun, karena seperti contoh gambar dibawah, setelah node 3 adalah node 1. Gambar berikut adalah contoh dari circular single linked list: 2. Doubly Linked List Berbeda dengan circular single linked list, doubly linked list ini tidak membentuk sebuah sirkuit. Di setiap node ada sebuah pointer yang menunjuk ke node sebelum dan setelahnya. Dalam doubly linked list ini, setiap node berisikan 3 bagian: node data, pointer ke node berikutnya, dan pointer ke node sebelumnya. Gambar berikut adalah contoh dari doubly linked list: 3. Circular Doubly Linked List Sesuai dengan namanya, circular doubly linked list merupakan gabungan dari circular single linked list dan

Heaps and Tries

Image
Heap Heap adalah pohon complete binary tree biner yang berdasarkan memenuhi properti heap. Property heaps antara lain : Min Heap Setiap node lebih kecil dari masing-masing childnya Root merupakan node paling kecil, sedangkan node terbesar terletak pada leaf node            10                     10          /    \                /      \         20      100            15        30        /                      /  \      /  \     30                     40    50  100   40 Max Heap Setiap node lebih besar dari masing-masing childnya Root merupakan node paling besar, sedangkan node terkecil terletak pada leaf node Min-Max Heap Heap dengan Min heap pada level ganjil dan Max heap pada level genap Heap dapat diimplementasi dengan array maupun dengan linked list. Aplikasi heap adalah sebagai berikut: Priority Queue Selection algorithm Dijkstra's Algorithm Prim Algorithm Implementasi heap menggunakan array : Array dimulai dengan indeks ke 1 Rumus u

AVL Tree

Image
AVL tree adalah sebuah Binary Search Tree yang bisa menyeimbangkan antara tinggibagian kiri dengan tinggi bagian kanan. Contoh sebuah AVL Tree Perbedaan tinggi subtree bagian kanan dan kiri adalah kurang dari sama dengan 1. Contoh yang bukan AVL Tree Perbedaan tinggi subtree 8 dan 18 lebih dari 1. AVL Tree sangat berguna karena BST biasa yang bukan AVL Tree, membutuhkan waktu yang cukup lama untuk beroperasi. Insertion Proses insertion AVL Tree dan BST cukup mirip, hanya saja setelah diinsert, AVL Tree langsung menyeimbangkan subtree kiri dan kanan. Contoh X adalah node yang akan diinsert, Case 1 : node terdalam terletak pada subtree kiri dari anak kiri X (left-left) Case 2 : node terdalam terletak pada subtree kanan dari anak kanan X (right-right) Case 3 : node terdalam terletak pada subtree kanan dari anak kiri X (right-left) Case 4 : node terdalam terletak pada subtree kiri dari anak kanan X (left-right Case tersebut akan selesai menggunakan single rotation unt

Summary & Codingan

SUMMARY Linked List II 1. Circular Single Linked List Di circular single linked list, node terakhir (tail) berisikan sebuah pointer yang terhubung ke node pertama (head), sehingga membentuk sebuah sirkuit, yang berarti tidak ada awal maupun akhir dan tidak ada NULL setelah node manapun, karena seperti contoh gambar dibawah, setelah node 3 adalah node 1. 2. Doubly Linked List Berbeda dengan circular single linked list, doubly linked list ini tidak membentuk sebuah sirkuit. Di setiap node ada sebuah pointer yang menunjuk ke node sebelum dan setelahnya. Dalam doubly linked list ini, setiap node berisikan 3 bagian: node data, pointer ke node berikutnya, dan pointer ke node sebelumnya. 3. Circular Doubly Linked List Sesuai dengan namanya, circular doubly linked list merupakan gabungan dari circular single linked list dan doubly linked list. circular doubly linked list tidak memiliki NULL di setiap nodenya karena seperti circular single linked list yang membentuk sebuah sirkuit. Ta

Binary Search Tree

Image
Binary Search Tree merupakan suatu struktur data binary tree yang menggunakan node sebagai dasarnya seperti halnya dengan linked list. Namun, BST ini digunakan untuk Fast Searching, Rapid Sorting, Easy Insertion, dan Deletion Data. Pada dasarnya, subtree sebelah kiri akan memiliki node yang nilainya lebih kecil daripada parent node, sedangkan sebelah kanan berisikan node yang memiliki nilai lebih tinggi daripada parent node. Searching Dalam mencari suatu nilai pada BST, pertama akan dibandingkan dengan nilai root, jika nilai yang dicari berada pada root, maka root adalah nilai yang dicari, namun jika nilai yang dicari lebih besar daripada root, maka akan mencari subtree sebelah kanan dari root node. Sebaliknya jika nilai yang dicari lebih kecil maka akan mencari subtree sebelah kiri dari root node. Insertion Memasukkan sebuah nilai baru pada binary tree akan selalu masuk ke bagian paling bawah (leaf). Dimulai dengan mencari nilai root sampai ke leaf node, dan jika nilai ya

Hashing table & Binary Tree

Image
Hashing Table Hashing adalah sebuah cara untuk mengetahui objek secara spesifik dari kumpulan objek yg mirip. Sedangkan Hash Table adalah sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik untuk setiap record (baris) menjadi angka (hash) lokasi record tersebut dalam sebuah tabel. Operasi pada hash table: 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 tersebut getIterator: mengambalikan iterator,yang memeriksa nilai satu demi satu Contoh deklarasi hash table dalam coding: HASHTBL *hashtbl_create(hash_size size, hash_size (*hashfunc)(const char *)) { HASHTBL *hashtbl; if(!(hashtbl=malloc(sizeof(HASHTBL)))) return NULL; free(hashtbl); return NULL; } hashtbl->size=size; if(hashfunc) hashtbl->hashfunc=hash

Push and Pop Linked List

Review 3 Maret 2020 Dari materi yang diajarkan di kelas besar pada tanggal 3 Maret 2020, saya mempelajari cara menggunakan push dan pop dalam singly dan double linked list. Push: Insert elemen ke dalam linked list Pop: Kebalikannya push, menghilangkan elemen dari linked list Contoh codingan pop pada singly linked list: void pop() { curr = head; while(curr->next!=tail){ curr = curr->next; } free(tail); tail = curr; tail->next = NULL; } Contoh codingan push pada double linked list: void push(int a) { curr = (struct Data*)malloc(sizeof(struct Data); curr->value = a; if(head -- NULL){ head = tail = curr; } else { tail->next = curr; curr->prev = tail; tail = curr; } tail->next = NULL; } Contoh codingan pop pada double linked list: void pop2() { if(tail == head){ free(curr); tail = head = curr = NULL; } else { tail = tail->prev; free(tail->next); tail->next = NUL

Linked List II

Image
1. Circular Single Linked List Di circular single linked list, node terakhir (tail) berisikan sebuah pointer yang terhubung ke node pertama (head), sehingga membentuk sebuah sirkuit, yang berarti tidak ada awal maupun akhir dan tidak ada NULL setelah node manapun, karena seperti contoh gambar dibawah, setelah node 3 adalah node 1. Gambar berikut adalah contoh dari circular single linked list: 2. Doubly Linked List Berbeda dengan circular single linked list, doubly linked list ini tidak membentuk sebuah sirkuit. Di setiap node ada sebuah pointer yang menunjuk ke node sebelum dan setelahnya. Dalam doubly linked list ini, setiap node berisikan 3 bagian: node data, pointer ke node berikutnya, dan pointer ke node sebelumnya. Gambar berikut adalah contoh dari doubly linked list: 3. Circular Doubly Linked List Sesuai dengan namanya, circular doubly linked list merupakan gabungan dari circular single linked list dan doubly linked list. circular doubly linked lis