Data Structure

Summary data structure
Halo guys kali ini saya akan melakukan summary terhadap data struktur yang telah saya belajar.

1. Linked list
Didalam data struktur, linked list adalah cara penyambungan alamat-alamat data yang ada menjadi satu kesatuan seperti array tetapi secara dinamik. Ada 4 macam linked list yaitu
  a. singly linked list yaitu cara penyambungan hanya dengan 1 rantai dimana rantai tersebut akan tersambung apabila ada data yang akan disambung. Data yang disambung akan terus disambung sampai ke data yang paling belakang. Data yang paling belakang akan menyambungkan datanya ke data yang paling depan.
Circular Singly Linked List - javatpoint
berikut adalah contoh singlly linked list dimana dia akan terus bersambung meskipun datanya sudah tidak ada di bagian paling depan
  b. single linked list, caranya sama aja dengan singly linked list, hanya saja data yang paling akhir tidak tersambung kemana-mana
  c. Double linked list, cara penyambungannya memiliki 2 rantai, kalau single linked list itu kan next terus. Kalau double linked list rantai keduanya digunakan untuk prev. jadi dapat menunjuk data sebelum. Difference between Singly linked list and Doubly linked list ...
Jadi dia memiliki 2 rantai yaitu next dan prev.
  d. Doubly linke list, caranya sama seperti double linked list hanya saja data terakhir next dan data awal prev saling menunjuk. jadi tidak null.

2. Queue
Sistem queue adalah cara memasukin data dalam linked list secara pengantrian. jadi yang paling pertama keluar paling pertama. Jadi di sini kita mendefisini head dan tail untuk mendorong data sebagai data atas dan data paling bawah. karena 
berikut adalah contoh kodingannya. btw di bagian function node *newnode(int data) itu lupa letakkan return temp, karena dia setelah jalan yang mau dipakai adalah tempnya.

3. Stack 
yaitu tumpukan, konsepnya itu seperti tumpukan piring didalam kotak, jadi kalau mau ngambil keluar kita harus ambil yang paling atas,dimana piring yang paling terakhir dimasukan.
4.Hash
yaitu teknik mengisi data sesuai tempatnya di array.Yang pertama kita harus nyari dulu keynya dengan hashfunction dimana bisa berbagai macam function. terserah menurut kalian yang mana bagus. setelah mencari key  kita akan memasukin data tersebut ke dalam array dimana index si key tersebut.
Jadi bagaimana kalau keynya sama? ada 2 cara yaitu linear probing dan chaining. Yang bagus itu chaining, karena linear probing menyimpan data setelah array ke key tersebut. jadi kalau misalnya ada rak buku nih, tempat buku tersebut kalau sudah terisi, maka buku itu diletakkan disampingnya. jadi rak buku itu tidak bisa membesar.
Kenapa saya bilang chaining? karena chaining itu dia membuat linked list di array ke key tersebut untuk terus menyambungkan data tersebut dengan data lain dimana memiliki key yang sama. Hash function itu dibuat sesuai dengan size si rak buku yaitu hash table contoh hash func yang paling gampang adalah pembagian dimana keynya didapatkan dari data%size.

OH YAH HAMPIR KELEWATAN!

5. Postfix,Infix dan Prefix
itu apa? boleh dibilang penerapan di queue dan stack. jadi ini adalah soal matematika dasar seperti contohnya a + b * c, nah ini gimana diubah jadi postfix,infix dan prefix. Maksudnya diubah itu setiap karakter didalam string "a+b*c" akan dimasukan kedalam node berbeda.
  a. postfix. jadi postfix itu adalah penulisan operator seperti "*/+-" itu di tulis di paling belakang
jadi string "a+b*c" itu jadi kaya gini , "abc*+".
b. infix,kalau infix sih penulisan string seperti biasa "a + b *c" ini sudah termasuk infix.
b.prefix, prefix adalah penulisan operator di paling depan sehingga angka-angkanya tertulis paling belakang. contohnya ,"+a*bc",kenapa kalinya ditengah? karena perkalian diutamakan terlebih dahulu dalam melakukan aritmatika.

ini adalah contohnya, jadi kalo ada brackets seperti "()" maka akan diutamakan dulu -nya dalam postfix dan dalam prefix akan ditaro di tengah terlebih dahulu, baru perkalian, karena yang diutamakan adalah yang didalam brackets.

6. Binary Search Tree.
Sebetulnya ini lebih banyak ke rekursif sih. jadi mirip linked list cuman rantainya tuh ada root, left dan right. dimana root adalah data paling atas dan left adalah data yang lebih kecil dari root yang terletak di kirinya si root. dan right adalah data yang lebih besar dari root yang terletak di kanan si root. Jadi disini kita akan menganggap kalau root left dan right sudah penuh, kita menganggap left itu jadi root, jadi kita isi lagi bagian kiri itu jadi data lebih kecil dan kanan lebih besar. Ini akan terus berulang menggunakan rekursif. 
Sebetulnya BST ini harus lebih banyak simulasi sih.Jadi kalau hanya dijelaskan seperti ini jadi aneh.
Terus didalam penghapusan data di BST itu nyari data yang bisa menggantikan data tersebut dan tidak merusak aturan rantainya. Daripada pusing berikut adalah link simulasi BST boleh di coba.

Itu saja dari saya sekian terima kasih!
berikut adalah contoh program tugas dari binus tentang menu yang menggunakan double linked list:
https://drive.google.com/open?id=1r2D-qKUCYtNZ4amW0FY6_nYdGI7V_RrS

Comments

Popular posts from this blog

Heap

Linked list