Posts

Showing posts from March, 2020

Summary

Image
1. Circular Single Linked List Circular single linked list adalah single linked list yang tidak menerima value NULL yang dikarenakan node terakhir akan menunjuk ke head pointer sehingga circular single linked list tidak menerima value NULL. 2. Doubly Linked List Doubly linked list adalah single linked list yang memiliki 2 arah pointer dimana sebuah node memiliki 2 pointer yaitu next dan prev. Ada 2 cara untuk menyunting doubly linked list: a. Insert Insert digunakan untuk memasukan node baru ke dalam doubly linked list dan mengkoneksikan node tersebut dengan node yang sudah ada. struct tnode *node = (struct tnode*) malloc (sizeof (struct tnode); node->value = x; node->next  = NULL; node->prev  = tail; tail->next = node; tail = node; b. Delete Delete digunakan untuk menghapus node tertentu dari doubly linked list. Jika menghapus node saja: free  (head); head = NULL; tail = NULL; Jika menghapus head: head = head.next; free (head.prev); head.prev = NUL

Binary Search Tree

Binary Search Tree Binary Search Tree mempunyai 2 aturan yaitu: 1. Jika value node lebih besar dari node, maka node tersebut akan menjadi leaf kanan node tersebut. 2. Jika value node lebih kecil dari node, maka node tersebut akan menjadi leaf kiri node tersebut. Ini adalah contoh kode create dan insert untuk binary search tree: #include<stdio.h> #include<stdlib.h> struct node{ int key; struct node *left, *right; }; // Function untuk membuat node baru struct node *newNode(int item){ struct node *temp = (struct node *)malloc(sizeof(struct node)); temp->key = item; temp->left = temp->right = NULL; return temp; } void inorder(struct node *root) { if (root != NULL) { inorder(root->left); printf("%d \n", root->key); inorder(root->right); } } /* Function untuk insert */ struct node* insert(struct node* node, int key){ if (node == NULL) { return newNode(key); } if (key < node->key){ node->left = i

Hashing, Hash Table dan Binary Tree

Image
Hashing, Hash Table dan Binary Tree Hashing Hashing adalah teknik yang digunakan untuk secara unik mengidentifikasi objek tertentu dari sekelompok objek serupa. Hashing dilakukan dengan membuat fungsi hash. Hasil dari fungsi hash dimasukkan ke dalam hash table. Hash Table adalah salah satu contoh implementasi linked list dalam data struktur. Hash table digunakan dalam penyimpanan data sementara. Ada banyak cara untuk hashing string ke sebuah key: 1. Mid-square 2. Division (most common) 3. Folding 4. Digit Extraction 5. Rotating Hash Contoh hash table yang kurang efisien dan yang efisien: Contoh yang kurang efisien Contoh fungsi hash yang efisien: Sebaik apapun fungsi hash yang kita buat, collision tidak dapat dihindari, oleh karena itu ada banyak teknik untuk menghindari collision: 1. Separate Chaining (Open Hashing) Separate Chahining adalah teknik yang paling banyak digunakan untuk resolusi tabrakan. Separate Chaining biasanya diimplementasikan menggunak