top of page
Search

SUMMARY SEMESTER 2

  • Writer: michael kurniawan
    michael kurniawan
  • Apr 5, 2020
  • 4 min read

POINTER

Pointer sebenarnya sudah dipelajari pada saat semester 1 yaitu pada matakuliah algorithm. Pointer sendiri adalah penunjuk suatu variabel. Pointer wajib memiliki alamat dari variabel yang ditunjuknya.

cara deklarasi pointer seperti ini

tipe_data *nama_pointer;

jika ingin membuat 2 pointer yang berbeda bisa menambahkan 1 bintang lagi atau membuat dengan nama pointer yang berbeda

tipe_data **nama_pointer;


ARRAY

Array merupakan kumpulan variabel yang bertipe data sama. array biasa digunakan untuk menyimpan sebuah nilai.

cara deklarasi array seperti ini

misalnya kita ingin membuat data angka yang dapat menyimpan angka 1-3

maka

int angka[4];

perlu diketahui bahwa setiap kali membuat array banyaknya data harus +1 karena array selalu mulai dari angka 0.


LINKED LIST

Linked list adalah salah satu data structure yang terdiri dari urutan record data dimana setiap record punya field yang berisikan alamat/referensi ke record data berikutnya dalam sebuah urutan.

dalam melakukan deklarasi linked list perlu diketahui kita harus membuat struct datanya terlebih dahulu caranya seperti ini

struct data{

char name[51];

int score; struct data *next;

}*head=NULL, *tail=NULL;


struct data* newNode(char name[], int score){ //1. reserve memory struct data *node = (struct data*)malloc(sizeof(struct data)); //2. assign value strcpy(node->name, name); (*node).score = score; node->next = NULL; return node; }

setelah membuat struct maka kita bisa membuat function dari linked list seperti push dan pop

sebagai contoh kita mau membuat push dan pop function disini yang saya akan contohkan adalah push depan dan pop depan.

Push Depan

void pushHead(struct data **head, struct data **tail, char name[], int score){ //1. reserve memory & 2. assign value struct data *node = newNode(name, score); //3. connect if(*head == NULL) //list masih kosong *head = *tail = node; else{ node->next = *head; *head = node; } }


Pop Depan

void popHead(struct data **head, struct data **tail){ if(*head == NULL) printf("No Data to Delete\n"); else if(*head == *tail){ free(*head); *head = *tail = NULL; } else{ struct data *curr = *head; *head = (*head)->next; free(curr); } }


sebenarnya function ini masih banyak lagi seperti push belakang, push tengah, pop belakang, pop tengah, dan pop all.

dari hasil coding diatas bisa dideklarasikan seperti ini

int main(){ struct data *head=NULL; struct data *tail=NULL; //lalu masukkan function push yang diinginkan misal push middle atau pop pushhead(&head, &tail, "michael", 19);

//perlu diingat function pop tidak akan berjalan jika data yang tersisa tinggal 1 }


CIRCULAR LINKED LIST

Circular Single Linked List adalah sebuah Linked List dimana semua node terhubung untuk membentuk sebuah loop.

Pada Circular Single Linked List tidak memiliki NULL pada bagian akhirnya.

Cara deklarasi Circular Linked List

typedef struct TNode{ int data; TNode *next; };


DOUBLY LINKED LIST

Doubly Linked List adalah Linked List dua arah dimana yang satu berisi refrensi kedata berikutnya dan yang satunya lagi berisi data refrensi berikutnya.

Cara deklarasi Doubly Linked List

struct tnode {

int value;

struct tnode *next;

struct tnode *prev;

};

struct tnode *head = 0;

struct tnode *tail = 0;


HASHING TABLE

Hashing adalah teknik yang digunakan untuk menyimpan dan mengambil key dengan cepat.

Dalam Hashing character string dapat ditransform menjadi sebuah nilai yang datanya pendek atau sebuah key yang mewakili string asli.

hashing function ada beragam contohnya seperti mid-square, division, folding, digit extraction, rotating hash.

dalam hashing table juga ada yang namanya collision

untuk menyelesaikan collision bisa menggunakan 2 cara yaitu

1. Linear Probing

Cari slot kosong berikutnya dan letakkan string tersebut di sana.

2. Chaining

Masukkan string ke dalam slot sebagai chained list(linked list).

TREE & BINARY TREE

Tree adalah struktur data non-linear yang mewakili hubungan hierarkis di antara objek data.

Binary tree adalah struktur data rooted tree di mana setiap node memiliki paling banyak dua anak.

Kedua anak itu biasanya dibedakan sebagai anak kiri dan anak kanan.

Node yang tidak memiliki anak disebut leaf.

tipe-tipe binary tree juga beragam yaitu

1. PERFECT binary tree adalah binary tree di mana setiap level berada pada kedalaman yang sama.

2. Complete Binary Tree adalah binary tree di mana setiap level, kecuali mungkin yang terakhir, terisi penuh, dan semua node sejauh mungkin dibiarkan. Perfect Binary Tree adalah Complete Binary Tree. 3. Skewed Binary Tree adalah binary tree di mana setiap node memiliki paling banyak satu anak.

4. Balanced Binary Tree adalah binary tree di mana tidak ada daun yang jauh lebih jauh dari root daripada leaf lainnya (skema penyeimbangan yang berbeda memungkinkan definisi yang berbeda dari "jauh lebih jauh").


TRANSVERSAL

misal ekspresi pada tree concept

struct tnode {

char chr;

struct tnode *left;

struct tnode *right;

};

lalu buat ekspresi pada tree dari prefix

Bisa dideklarasikan dengan cara rekursif

char s[MAXN];

int p = 0;

void f(struct tnode *curr) {

if(is_operator(s[p])) {

p++; curr->left = newnode(s[p]);

f(curr->left);

p++; curr->right = newnode(s[p]);

f(curr->right);

}

}

Prefix transversal

void prefix(struct tnode *curr){

printf( “%c “, curr->chr );

if ( curr->left != 0 ) prefix(curr->left);

if ( curr->right != 0 ) prefix(curr->right);

}

Postfix transversal

void postfix(struct tnode *curr) {

if ( curr->left != 0 ) postfix(curr->left);

if ( curr->right != 0 ) postfix(curr->right);

printf( “%c“, curr->chr );

}

Infix transversal

void infix(struct tnode *curr) {

if ( curr->left != 0 ) infix(curr->left);

printf( “%c“, curr->chr );

if ( curr->right != 0 ) infix(curr->right);

}


BINARY SEARCH TREE

Binary search tree adalah salah satu struktur data yang faster searching, rapid sorting, and easy insertion and deletion. Binary search tree juga dikenal sebagai versi binary tree yang disort.

binary search tree memiliki 2 operation yaitu insert dan delete


TUGAS MEMBUAT SEBUAH PROGRAM TOKO DENGAN DOUBLE LINKED LIST

Tugas program toko

CPP bisa didownload pada link google drive disini


Nama: Antonio Michael Kurniawan

NIM : 2301924063

 
 
 

댓글


About  Me
 

Hello, My name is Antonio Michael Kurniawan. I am currently studying in binus majoring in game application and technology. In this blog I will post about the tasks about data structure.

  • Facebook
  • Twitter

© 2023 by Antonio Michael Kurniawan. Proudly created with Wix.com

Contact

You can contact me via email michaelkurniawan137@gmail.com

Thanks for submitting!

bottom of page