Postingan

Menampilkan postingan dari April, 2020

AVL Tree

Gambar
AVL Tree merupakan pengembangan dari Binary Search Tree. AVL Tree memberikan kompleksitas yang lebih rendah, khususnya dalam worst case, karena AVL Tree menyeimbangkan root-root dari Binary Search Tree. Dalam melakukan insertion, deletion dan searching, kompleksitasnya sangat dipengaruhi oleh tinggi dari pohon tersebut. Apabila Binary Search Tree memiliki cabang yang cenderung timpang, misal kebanyakan data berada di sisi kiri sementara sisi kanan kosong, itu berpengaruh terhadap kompleksitasnya sendiri. Dan AVL Tree menyelesaikan masalah ini dengan menyeimbangkan cabang-cabangnya sehingga tidak terlalu timpang. Ini yang disebut dengan Balanced Binary Search Tree dan AVL Tree ini merupakan salah satu dari bentuk Balanced Binary Search Tree. Tinggi sebuah node: - Tinggi dari sebuah subtree kosong adalah 0 - Tinggi leaf adalah 1 Balance Factor: Perbedaan tinggi antara subtree kiri dan subtree kanan dari sebuah node *Balance factor sebuah node hanya boleh paling besar 1

Code

Gambar
-------------------------------------------------------------------------------------------------------------------------- #include <stdio.h> #include <string.h> #include <stdlib.h> struct product{ char productName[31]; int qty; int price; struct product *next, *prev; } *head = NULL, *tail = NULL, *curr; void addProduct(char *productName, int qty){ curr = (struct product*)malloc(sizeof(struct product)); strcpy(curr->productName, productName); curr->qty = qty; curr->price = rand() % 1000000; if(curr->price == 0) curr->price = curr->price + 1000; else if(curr->price < 10) curr->price = curr->price * 1000; else if(curr->price < 100) curr->price = curr->price * 100; else if(curr->price < 1000) curr->price = curr->price * 10; curr->next = curr->prev = NULL; if(head == NULL){ head = tail = curr; } else if (strcmp(p

Review (Week 6)

Gambar
LINKED LIST Single Linked List Single Linked List merupakan Linked List yang hanya terhubung ke data berikutnya. Codingan dasar dalam membuat Linked List: struct node { int nilaiData;     struct node *next; }; struct node *head = NULL; struct node *tail = NULL; Circular Single Linked List Circular Single Linked List memiliki bentuk yang sedikit berbeda dengan Single Linked List. Tail->next pada Single Linked List menunjukkan nilai NULL, sedangkan pada Circular Single Linked List, tail->next menunjuk pada head. Sehingga tidak terdapat NULL dalam Circular Single Linked List. Dalam codingan, hanya perlu sedikit modifikasi, yaitu dengan mengubah pointer next pada nilai terakhir menunjuk nilai dari head. Hal ini berlaku untuk insertion dan deletion. Double Linked List Double Linked List merupakan Linked List yang terhubung dengan data berikutnya dan data sebelumnya. struct node { int nilaiData;    struct node *next; struct node *pre