Monday, April 27, 2020

AVL TREE

DATA STRUCTURE 

AVL TREE
AVL adalah sebuah tipe binary tree yang masuk dalam kategori balanced tree dalam arti kata lain sub tree pada kiri sama kanannya maksimum sederajat atau beda 1.


AVL INSERTION
cara kerja nya ini "hampir" sama dengan pada binary search cuma beda nya ini dicek setiap mau di insert.pemilihan cara nya ada 2 yaitu single rotation dan double rotation tergantung kebutuhan.


AVL DELETION
cara kerja nya ini "hampir" sama dengan pada binary search cuma beda nya ini dicek setiap mau di delete

AVL Tree | Set 2 (Deletion) - GeeksforGeeks
^^^Dari google^^^

Monday, April 6, 2020

TUGAS saya


-Linked List-

<>Linked List itu apa ?????
Jadi Linked List itu sebuah struktur data yang terdiri dari urutan rangkaian nodes secara bersama sama.

<>Keunggulan nya apa ????
Kita bisa menggunakan memory secara efektif dan tidak dapat overflow (kecuali memory pc kamu habis).

<>Kekurangan nya apa????
Penggunaan dan pengaksesan nya lebih kompleks daripada array, dan juga waktu yang dibutuhkan lebih banyak untuk mengaksesnya.

<>Linked List dibedain add 3 apa aja????
1. Single Linked List
2. Double Linked List
3. Circular Double Linked List

<> Single Linked List
Single Linked List yaitu jenis Linked List yang cuma mempunyai 1 connector ke node lainnya dalam kata lain cuma memiliki 1 variable pointer. Cuma memiliki 1 arah. Cara kerja seperti berikut ini:


<>Double Linked List
Double Linked List hampir sama dengan single Linked List,Bedanya yang in memiliki dua pointer yang menunjuk ke node setelah nya dan sebelum nya . Cara Bekerja nya Sebagai berikut in:


<>Circular Linked List
Circular single Linked List adalah setiap node terdiri dari nilai dan penunjuk berikutnya, tetapi penunjuk tail berikutnya adalah head. berikut cara kerjanya:

Circular Double Linked List adalah setiap node mengandung value dari pointer selanjutnya dan sebelumnya. Berikut cara kerjanya:


Hash Table dan Binary Tree

#Binary Tree:
Jadi tiap si node hanya boleh punya paling banyak 2 anak simpul. dan kedua anak simpul tersebut harus terpisah .Metode ini juga bisa disimpan di struktur data dalam array.metode ini tidak boros jika Binary tree nya lengkap.
contoh:
       8
   ^       ^
   3       10
^    ^          ^
1    6           14
     ^   ^         ^
     4   7          13
HASH TABLE:
Jadi dia ini adalam tempat menyimpan string asli nah terus dia bermain nilai index pada table nya. biasa nya di temukan pada menyimpan password. ini sangat berguna untuk menjaga privasi anda.
CONTOH:
Image result for hashing table


kodingan toko
--------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct dt{
char nama[10];
int jmlh;
dt *next;
dt *prev;
};
dt *head = NULL;
dt *tail = NULL;
void p(char nama[10], int jmlh){
dt *curr = (dt *)malloc(sizeof(dt));
strcpy(curr->nama, nama);
curr->jmlh = jmlh;
curr->next = NULL;
curr->prev = NULL;

if(head == NULL){
head = tail = curr;
}
else if(strcmp(head->nama, curr->nama) > 0){
curr->next = head;
head->prev = curr;
head = curr;
}
else if(strcmp(tail->nama, curr->nama) < 0){
curr->prev = tail;
tail->next = curr;
tail = curr;
}
else{
dt *temp = head;
while(strcmp(temp->next->nama, curr->nama) < 0){
temp = temp->next;
}
curr->next = temp->next;
temp->next = curr;
temp->next->prev = curr;
curr->prev = temp;
}
}
void LHT(){
int ttl= 0;
int a = 1;
dt *temp = head;
if(temp == NULL){
printf("gada data\n");
}
else{
while(temp != NULL){
printf("%d %s %d %s\n", a, temp->nama, temp->jmlh, "Rp. 5,500");
a++;
ttl = ttl + temp->jmlh;
temp = temp->next;
}
printf("tolal:%d\n", ttl);
printf("price:kindness is free\n");
}
}
void TKR(int s, int A1){
dt *temp = head;
int hit1 = 1;
while(temp != NULL){
temp = temp->next;
    hit1++;
}
temp = head;
if(s > hit1){
printf("data ga ketemu\n");
}
else{
for(int i = 1; i < s; i++){
temp = temp->next;
}
temp->jmlh = A1;
}
}
void pop(int b){
dt *temp = head;
for(int i = 1; i < b; i++){
temp = temp->next;
}
if(head == NULL){
printf("gada data/n");
}
else{
if(temp == NULL){
printf("data ga ketemu\n");
}
else if(temp == tail){
tail = temp->prev;
tail->next = NULL;
free(temp);
}
else if(temp == head){
head = temp->next;
head->prev = NULL;
free(temp);
}
else{
dt *curr1 = temp->next;
dt *curr2 = temp->prev;
curr1->prev = curr2;
curr2->next = curr1;
}
}
}
void popall(){
dt *temp = head;
int a = 1;
while( temp->next != NULL){
a++;
}
for(int i = 1; i< a; i++){
pop(i);
}
}
int main(){
char nama[10];
int jmlh;
int hit1 = 0;
int hit2;
while(hit1 != 4){
system("cls");
printf("1.tambah barang\n");
printf("2.Edit jumlah\n");
printf("3.Hapus\n");
printf("4.Bayar\n\n\n");
printf("Pilihan:");
scanf("%d",&hit1);
getchar();
switch (hit1){
case 1: {
printf("nama:");
scanf("%s",&nama);getchar();
printf("jumlah:");
scanf("%d",&jmlh);getchar();
p(nama, jmlh);
break;
}
case 2: {
LHT();
printf("Barang ke:");
scanf("%d",&hit2);getchar();
printf("Jumlah:");
scanf("%d",&jmlh);getchar();
TKR(hit2, jmlh);
break;
}
case 3: {
LHT();
printf("Barang ke:");
scanf("%d",&hit2);
break;
}
case 4: {
LHT();
popall();
break;
}}}
return 0;
}

--------------------------------------------------------------------------------------------------------------------------