Nama: Dea Claresta
Nim:2301863736
RINGKASAN DATA STRUCTURE


Pointer
pointer digunakan untuk mengirimkan informasi diantar function.
pointer digunakan untuk mengirimkan array, string sebagai fungsi.
pointer biasanya digunakan untuk complex data structures, seperti linked list, trees, linked stacks, linked queues dan graphs.

Array
array adalah kumpulan data yg sama dalam satu elemen. dimana data-data ini memiliki type data yang sama.

Structure
structures merupakan tempat penyimpanan. structure dapat meyimpan data yang saling berhubungan walaupun memiliki data  types yang berbeda-beda.structure memiliki keunggulan jika dibandingkan dengan array, dimana structure bisa menyimpan data sesuai dengan data yang ditambahkan. tidak seperti array yang jika ingin menyimpan data harus terlebih dahulu

Linked list
linked list adalah kumpulan linear dari elemen data dimana setiap elemen ini disebut nodes.
linked list dibagi menjadi dua yaitu single linked list dan double linked list.linked list ada 3 bagian, yaitu head, current, dan tail, dimana setelah tail selalu =NULL. Posisi head selalu berada di depan rantai , dan tail ada di paling belakang rantai. Current bisa berpindah
pindah ke posisi manapun.


Single linked list
single linked list adalah tipe linked list yang paling simple dimana setiap node mengandung beberapa data dan pointer ke node selanjutnya dimana setiap nodes menyimpan alamat dari node selanjutnya . single linked list hanya bisa melalui data-data dalam satu jalur atau arah.

struct node
{
    int data;
    struct node *next; // Pointer to next node
};


Circular linked list
circular linked list sama seperti single linked list, namun, pada tail nya dia akan kembali lagi ke data paling depan, sehingga terbentuk seperti lingkaran data.
Double linked list
double linked list merupakan linked list yang memiliki dua arah sehingga memiliki 3 part data, yaitu data node, pointer ke previous dan pointer ke next .dalam double linked list, head->prev= NULL, dan tail>next=NULL


struct node
{
    int data;
    struct node *next; // Pointer to next node
struct node*prev;//pointer untuk node sebelumnya
};



Stacks
stack adalah data yang disimpan dalam baris yang terurut.Dalam linked list, mampu melakukan 3 operasi dalam stack, yaitu pop, push dan peek.

Pop
pop adalah operation yang menghapus sebuah element dari stack.

Push
Push merupakan operai yang menambahkan data dalam sebuah stack

Peek
Peek merukan operasi yang menunjukkan semua data dalam stack yang ada











Push depan,
Push depan  adalah menyelipkan data di paling depan rantai data
Push belakang
push belakang adalah menambahkan data dari belakang rantai 
Push
push biasa, dimana push ini menyelipkan data di antara data lainnya
Pop depan,
pop depan adalah menghilangkan data paling depan
Pop belakang
pop belakang adalah menghilangkan data di paling belakang 
Pop
pop adalah menghapuskan data yang disebutkan
Pop all
pop all artinya menghapus semua data yang ada

Stacks
stack adalah data yang disimpan dalam baris yang terurut.Dalam linked list, mampu melakukan 3 operasi dalam stack, yaitu pop, push dan peek. stack sendiri memiliki prinsip masuk pertama, keluar terakhir ,seperti tumpukan piring

Pop
pop adalah operation yang menghapus sebuah element dari stack.

Push
Push merupakan operai yang menambahkan data dalam sebuah stack

Peek
Peek merukan operasi yang menunjukkan semua data dalam stack yang ada

Queue
berbeda dengan Stack , queue memiliki prinsip dimana masuk pertama , makan akan keluar pertama, seperti dalam antrian

Priority queue
Priority queue sama seperti queue namun ada beberapa hal yang diprioritaskan. jika dalam kehidupan nyata maka ini mirip dengan pasien di rumah sakit dimana pasien yang sudah tua dan gawat darurat akan selalu diutamakan.

Tree
tree merupakan hubungan dari node yang satu ke yang lainnya dimana akan ada satu node yang dianggap menjadi akar dan terus dipecah menjadi sub node -sub node lainnya


Hashing
hashing merupakan metode menyimpan data yang memiliki beragam cara

Binary tree
binary tree adalah data structures yang merupakan kumpulan elemen yang disebut node.Binary tree memiliki banyak macam, mulai dari complete binary tree, dan extended binary tree.

Binary search tree
binary search tree sama seperti ordered binary tree yang dimana merupakan varian dari binary tree dimana nodesnya tersusun rapi.
11 void insert(node ** tree, int val) {
12 node *temp = NULL;
13 if(!(*tree)) {
14   temp = (node *)malloc(sizeof(node));
15   temp->left = temp->right = NULL;
16   temp->data = val;
17   *tree = temp;
18   return;
19 }
20
21 if(val < (*tree)->data) {
22      insert(&(*tree)->left, val);
23   } else if(val > (*tree)->data) {
24     insert(&(*tree)->right, val);
25   }
26 }
6 node* search(node ** tree, int val) {
47 if(!(*tree)) {
48   return NULL;
49  }
50 if(val == (*tree)->data) {
51   return *tree;
52  } else if(val < (*tree)->data) {
53    search(&((*tree)->left), val);
54  } else if(val > (*tree)->data){
55    search(&((*tree)->right), val);
56  }
57 }
8 void deltree(node * tree) {
39 if (tree) {
40   deltree(tree->left);
41   deltree(tree->right);
42   free(tree);
43  } 

Gambar kedua untuk searching
gambar ketiga untuk delete

Dalam menghitung sebuah angka, komputer tidak bisa langsung membaca mana yan harus dilakukan dahulu , baik itu kali, pangkat, maupun tanda kurung. oleh sebab itu kita harus mengubah bentuk itu (infix) menjadi post fix dan prefix terlebih dahulu.
postfix: kiri,kanan ,print
prefix: print, kiri,kanan
infix:kiri ,print,kanan


ini codingan untuk tugas GSLC (dreamers market)

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

struct Data {
char produk[100];
int angka;
int price;
struct Data *next, *prev;

}*head,*tail,*curr;

 void add(int harga,char nama[], int jumlah){
  curr=(struct Data*)malloc(sizeof(struct Data));
strcpy(curr->produk,nama);
curr->angka=jumlah;
curr->price=harga;

  if(head==NULL){
  head=tail=curr;
 
}
else{
if(strcmp(nama,head->produk)<0){
curr->next=head;
head->prev=curr;
head=curr;
}
else if(strcmp(nama,tail->produk)>0){
tail->next=curr;
curr->prev=tail;
tail=tail->next;
}
else{
struct Data*temp;
//temp=head;
temp=head;
while((strcmp(nama,temp->produk)>0)&&temp->next!=NULL){
temp=temp->next;

}
curr->next=temp;
temp->prev=curr->prev;
temp->prev=curr;
temp=curr->prev;
temp->next= curr;

}

}
tail->next= head->prev=NULL;
 
 }

void cetak(){
int i=0;
curr=head;
int total=0;
printf("==========================================================\n");
printf("|                      Product List                      |\n");
printf("==========================================================\n");
printf("|No.|    Name    |   Price   |   Quantity   |    Total   |\n");
printf("==========================================================\n");

while(curr!=NULL){
i++;
printf("|%-3d|%-12s|Rp %-8d|%-14d|Rp %-9d|\n",i,curr->produk,curr->price, curr->angka,curr->angka*curr->price);

curr=curr->next;
}
}
void remove(char nama[]){

curr=head;
if(head==NULL){
printf("Data kosong,tidak ada yang bisa dihapus\n");
}
else{

while(strcmp(curr->produk,nama)!=0&& curr->next !=NULL){

curr=curr->next;
}
if(strcmp(curr->produk,nama)==0){
struct Data* temp;
temp=head;
if(curr==head){
head=head->next;
head->prev=NULL;
free(curr);
}
else if(curr==tail){
tail=tail->prev;
tail->next=NULL;
free(tail);
}
else {
temp=curr->next;
temp->prev=curr->prev;
temp=curr->prev;
temp->next=curr->next;
free(curr);

}
}
else{
printf(" Produk itu tidak ditemukan\n");
}
}
}
void edit(char nama[], int jumlah){
curr=head;
if(head==NULL){
printf("Data kosong,tidak ada yang bisa diedit\n");
}
else{

while(strcmp(curr->produk,nama)!=0&& curr->next !=NULL){

curr=curr->next;
}
if(strcmp(curr->produk,nama)==0){
curr->angka=jumlah;
}
else{
printf(" Produk itu tidak ditemukan\n");
}
}

}
int main(){
int pilihan=0;
char nama[100];
int jumlah=0;
int harga;
do{
printf("\n");
printf("===================\n");
printf("| Dreamers Market |\n");
printf("===================\n");
printf(" 1. Add produk \n");
printf(" 2. Edit barang\n");
printf(" 3. remove barang\n");
printf(" 4. Exit program\n");
printf("Pilihan anda : ");

scanf("%d",&pilihan);getchar();


if( pilihan==1){
printf("\nMasukkan nama produk yang ingin ditambahkan: ");
scanf("%[^\n]",nama);getchar();
printf("Masukkan jumlah produk: ");
scanf("%d",&jumlah);getchar();
harga=rand()%1000*1000;
add(harga,nama,jumlah);
cetak();
}
else if(pilihan ==2){
printf("\nMasukkan nama produk yang ingin diganti: ");
scanf("%[^\n]",nama);getchar();
printf("Masukkan jumlah produk yang benar: ");
scanf("%d",&jumlah);getchar();
edit(nama,jumlah);
cetak();

}
else if(pilihan==3){
printf("Nama produk yang ingin dihapus: ");
scanf("%[^\n]",nama);getchar();
remove(nama);
cetak();

}
}while(pilihan!=4);
cetak();
printf("====================================================\n\n");

printf(" TOTAL: KINDNESS IS FREE");

return 0;
}





Comments

Popular posts from this blog

SEMUA RINGKASAN DATA STRUCTURE(Sebelum UTS-UAS)

Data Struct Linked List 2

AVL Tree