Monday, 16 March 2020

Hash Table dan Binary Tree

1. Hash table

hash table adalah salah satu jenis struktur data yang menerapkan konsep penggunaan suatu fungsi
sebagai pemetaan nilai kunci yang unik dari value suatu data menjadi suatu indeks yang merupakan lokasi dari data tersebut. Hash table digunakan untuk mempercepat proses akses data. Contohnya, bila terdapat data yang ingin di simpan dalan suatu array :
data :
- Andre # 15
- William # 28
- Mona # 20
dan data tersebut dibuatkan hash function f(x) = (jumlah ASCII nama)%10, dimana x merupakan string nama. maka Mona yang berumur 20 akan disimpan didalam array dengan indeks bernomor 5.
sehingga jika ingin dilakukan akses data mona maka tidak perlu dilakukan lienar search dan dapat langsung mengakses array indeks kelima.

fungsi hash pada blockchain digunakan dalam kriptografi. hasing sangat cepat dan tepat sehingga sangat ideal untuk kriptografi dan masih digunakan sampai sekarang.

kode untuk menyimpan :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

struct node{
int age;
char name[100];
node *next;
};

struct hash{
node *head;
node *tail;
};

int getIndex(char input[]){
int sum = 0;
for(int i=0; input[i]!='\0'; i++){
sum = sum + input[i];
}
sum = sum%10;
return sum;
}

void push(node **head, node **tail, int umur, char nama[]){
node *temp = (node*)malloc(sizeof(struct node));
strcpy(temp->name, nama);
temp->age = umur;
if(*head == NULL){
*head = temp;
*tail = temp;
}else{
(*tail)->next = temp;
*tail = temp;
}
(*tail)->next = NULL;
}

void displayList(struct node *curr){
while(curr!=NULL){
printf("%s#%d-->", curr->name, curr->age);
curr = curr->next;
}
printf("NULL\n");
return;
}

int main(){
int umur;
char nama[100];
hash array_hash[10];
//initialize all head ans tail = NULL;
for(int i=0; i<10; i++){
array_hash[i].head = NULL;
array_hash[i].tail = NULL;
}

do{
system("cls");
for(int i=0; i<10; i++){
printf("%d| ", i);
displayList(array_hash[i].head);
}
printf("\n");

printf("insert nama ==> ");
scanf("%[^\n]", nama);getchar();
printf("insert umur ==> ");
scanf("%d", &umur);getchar();
int index = getIndex(nama);
printf("masuk index %d\n", index);
push(&array_hash[index].head, &array_hash[index].tail, umur, nama);

//displaying array_hash content


}while(true);

}




2. Binary Tree

binary tree atau pohon biner merupakan jenis struktur data yang menimpan data dalam bentuk hirearki. Setiap data dinamakan node, setiap node memiliki anak cabang kiri dan anak cabang kanan. Node paling pertama dinamakan Root dan node paling terakhir dinamakan Leaf. Operasi yang dapat dilakukan dalam suatu pohon biner adalah :
- insert : memasukknan data pada cabang kosong
- remove : menghapus suatu cabang tertentu
- create : membuat cabang baru


Sumber :
https://selembardigital.com/apa-itu-hashing-di-bawah-tudung-blockchain/
https://www.geeksforgeeks.org/hashing-data-structure/

No comments:

Post a Comment