Summary Data Structure


Summary of Data Structure study material for half Semester

Data Struktur  adalah format organisasi , menejemen dan penyimpanan data yang memberikan akses dan modifikasi yang lebih efisien. Struktur data adalah koleksi dari nilai data, hubungan antar data, dan fungsi dan operasi yang bisa diterapkan kedalam data. Dalam pembelajaran selama setengah semester ini struktur data yang dipelajari ada 3 bentuk yaitu Linked-list, Hash table, dan Binary Search Tree
1.      Linked-List
Linked-list adalah struktur data yang yang memberikan data tambahan berupa pointer pada setiap satuan data  untuk menunjukkan hubungan antar data. Untuk menunjukkan posisi setiap data biasanya diberi penunjuk tambahan untuk menunjukkan awal dan akhir dari kumpulan data yang biasa kita menamakannya pointer head dan tail. Untuk penunjuk pada data yang pertama atau terakhir biasa nya akan diberikan penunjuk berupa NULL(linked-list biasa) atau penunjuk ke data awalnya (circular linked-list) dikarenakan jika pointer pada data terakhir tidak diberi nilai maka pointer tersebut dapat menunjuk nilai secara sembarang yang membuat struktur data kita rusak.
Linked-List yang dipelajari ada 2 yaitu Single linked-list dan double linked-list bedanya hanya terletak pada pointer yang setiap data miliki . Jika Single linked-list memiliki satu pointer yang menunjuk ke data yang selanjut. Jika double linked-list menunjuk ke data yang sebelum dan setelahnya. Selain kedua linked list tersebut juga bisa juga linked list kita memiliki lebih dari 2 pointer contohnya untuk membuat jalur pada peta diperlukan data dengan 4 pointer untuk menunjuk ke arah mata angin. Konsep linked-list juga bisa diimplementasikan dalam bentuk struktur data stack dan queue.
Contoh kodingan Double Linked-Listed
#include<stdio.h>
#include <stdlib.h>

struct Node{
               int value;
               struct Node *next,*prev;
}*head=NULL,*tail=NULL,*curr=NULL;

struct Node* createNode(int value){
               struct Node* curr = (struct Node*) malloc (sizeof(struct Node));
               curr->value = value;
               curr->next = NULL;
               curr->prev = NULL;
               return curr;
}

void pushHead(int value){
               curr= createNode(value);
               if(head==NULL){
                              head=tail=curr;
               }
               else{
                              head->prev=curr;
                              curr->next=head;
                              head=curr;
               }
}

void pushTail(int value){
               curr = createNode(value);
               if(head==NULL){
                              head=tail=curr;
               }
               else{
                              curr->prev=tail;
                              tail->next=curr;
                              tail=curr;
               }
}

void popHead(){
               if(head==NULL){
                              return;
               }
               else if(head==tail){
                              head=tail=NULL;
               }
               else{
                              head=head->next;
                              curr=head->prev;
                              curr->next=NULL;
                              curr->prev=NULL;
                              head->prev=NULL;
                              free(curr);
               }
}

void popTail(){
               if(head==NULL){
                              return;
               }
               else if(head==tail){
                              head=tail=NULL;
               }
               else{
                              tail=tail->prev;
                              curr=tail->next;
                              curr->next=NULL;
                              curr->prev=NULL;
                              tail->next=NULL;
                              free(curr);
               }
}

void print(){
               curr=head;
               if(curr==NULL){
                              printf("no Node");
               }
               while(curr!=NULL){
                              printf("%d ",curr->value);
                              curr=curr->next;
               }
}


2.      Hash-Table
Data Struktur yang berbentuk seperti tabel. Penempatan data pada setiap sel tabel memiliki fungsinya tersendiri. Suatu data pasti memiliki property yang bisa dijadikan key untuk penempatan data. Proses mengambil key yang terdapat pada data disebut hashing. Setiap data menempati tempat yang unik pada hash table. Jika data dalam hash table mempunyai key yang sama itu disebut data collision dimana data tersebut memiliki nilai key yang sama cara mengatasinya adalah dengan linear probing yaitu menempatkan data pada baris selanjutnya dari tabel yang kosong atau  dengan chaining yaitu membuat linked list lagi didalam sel tabel sehingga penambahan data lebih dinamis dan tidak kehabisan tempat.
Untuk kodingan Hash Table silahkan kunjungi ; https://william081.blogspot.com/2020/03/hash-table.html
3.      Binary Search Tree
Data struktur yang berbentuk seperti pohon pada matematika. Properti yang dimiliki BST ini pada umumnya adalah:
a.      Subtree bagian kiri memiliki data yang key-nya kurang dari key data sebelumnya.
b.      Subtree bagian kanan memiliki  data yang key-nya lebih dari key data sebelumnya
c.      Subtree bagian kanan dan kiri juga harus memiliki propertinya yang sama dengan data diatasnya sehingga membentuk binary search tree.
Untuk kodingan Binary Search Tree silahkan kunjungi: https://william081.blogspot.com/2020/03/binary-search-tree-bst.html



Komentar

Postingan populer dari blog ini

Heap

Hash Table

Binary Search Tree (BST)