Jumat, 10 April 2020

DATASTR


LINKED LIST
Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) ataupun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.

Di dalam struktur data, ada 2 aspek yang kita pelajari, yakni tipe data dan structure (struct).
Tipe data merupakan kumpulan objek dan sebuah himpunan dari operasi-operasi yang menjalankan objek-objek terseubt.
Contoh tipe data pada integer, meliputi


·                     Objek: 0, -1, +2, dll.
·                     Operator: + , - , * , / , dll.   

Secara umum, structure merupakan kelompok tipe data yang dibentuk oleh user yang dapat menyimpan berbagai informasi dalam berbagai tipe data yang berbeda, sementara array hanya dapat menyimpan kumpulan data dalam tipe data yang sama.
Stack & Queue
Stack :Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK-nTLTfNoym62oOpROUs1cg7OYB2pyGGnp2GdboSI4zEq7jcn0s0I1A-WF64wTWdmvrBcDW4gG6gFXx1fdxkzi8-QyUNUBBPyPhlk_hDOYI4nq01DDVkl1UTou1SC-h2j44YXp0GiDjKG/s1600/Picture2.jpg
Last In First Out (LIFO).
Bisa diimplementasikan dengan :
Array (ada batasan , bisa looping di awal)
Linked list (tidak ad batasan, tidak bisa looping diawal).
Operasi pada stack:
Push (x) : menambah data dari paling atas.
Pop ( ) : membuang data dari paling atas.
Top ( ) : mengambil data dari paling atas. 
Pada stack kita juga di perkenalkan dengan :
Prefix (* 4 10) :
 Operator sebelum angka atau operand.
Infinix (4 * 10) : 
Operator diantara operand atau angka.
Postfix (4 10 *) : 
Operator di akhir. 
Ketiga hal ini merupakan bahasa komputer untuk proses perhitungan . Prefix, postfix dan infinix tidak menbutuhkan tanda kurung untuk setiap operasinya.

DFS (  Depth First Search)
DFS merupakam sebuah algoritma untuk melintasi atau mencari di pohon atau grafik. DFS dapat di implementasikan dengan fungsi rekursif atau prosedur berulang dari stack .Meskipun kedua hasilny agak berbeda karena proses jalannya tetapi keduanya menunjukkan hasil yang benar.
Queue :
  1. Antrian.
  2. Sistem First In First Out (FIFO).
  3. Diimplementasikan dengan : 
    •  Array 
Operasi pada stack:
Push (x) : menambah data dari paling belakang.
Pop ( ) : membuang data dari paling depan.
Top ( ) : mengambil data dari paling depan. 
Priority Queue :
Priority Queue adalah sebuah tipe data abstrak di mana masing-masing elemen diberi prioritas.
BFS (Breadth First Search) :
Breadth-first search adalah algoritma yang melakukan pencarian secara melebar yang mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Pada BFS menggunakan sistem dari Queue atau FIFO.
Hash Table & Binary Tree
Hash Table
Hashing
Sebelum mempelajari hash table kita harus mengetahui hashing terlebih dahulu. Hashing adalah sebuah teknik yang digunakan untuk menyimpan dan mengambil data dalam waktu yang cepat. Dalam kasus ini teknik hashing mengubah sebuah karakter string menjadi ukuran yang lebih kecil atau sebuah kunci yang merepresentasikan string aslinya. hashing juga dapat diartikan sebagai pembagian kunci ke sebuah array yang disebut hash table dengan menggunakan fungsi yaitu hash function.

Hash table
hash table merupakan suatu tempat atau array dimana digunakan sebagai tempat penyipanan string aslinya. di hash table kita menyimpan data sebagai array yang dimana setaip datanya memiliki sebuah indeksnya masing - masing. Jadi karena hal ini kita dapat mengakses data dengan sangat cepat. 
Binary Tree dan Tree
                Tree adalah struktur data non-linear yang mewakili hubungan hierarkis di antara objek data. Beberapa hubungan dalam tree dapat diamati dalam struktur direktori atau hierarki organisasi. Node pada tree tidak perlu disimpan secara berdekatan dan dapat disimpan di mana saja dan dihubungkan oleh pointer.
Tree memiliki elemen-elemen:
·                              Node
·                              Node paling atas disebut root
·                              Node yang tidak memiliki children (anak) disebut leaf (daun)
·                              Node yang memiliki parent yang sama disebut sibling
·                              Degree (tingkat) dari suatu node merupakan total subtree dari node
·                              Height/depth merupakan degree maximum dari node dalam tree
·                              Jika terdapat suatu garis yang menghubungkan p ke q, maka p disebut ancestor (leluhur) dari q, dan q merupakan descendant (keturunan) dari p.

STACK & QUEUE

Stack
            Secara harafiah, stack berarti tumpukan. Dalam struktur data, stack merupakan salah satu metode pengaturan data yang menggunakan sistem Last In First Out (LIFO). Data yang terakhir masuk, akan lebih dulu keluar/digunakan. Sebalikanya, data yang pertama masuk, akan keluar/digunakan terakhir. Sebagai gambaran, ketika anda menumpuk piring, piring yang pertama kali akan terletak di bawah piring kedua, dan seterusnya sampai piring yang terakhir berada di paling atas. Kemudian, saat anda ingin mengambil sebuah piring, tentunya anda akan mengambil piring yang paling atas. Piring pertama tadi akan terus berada di paling bawah sampai akhirnya mendapat giliran diambil.
           
            Operasi-operasi yang digunakan pada stack:
·         Push() à Menambah data baru ke paling atas
·         Pop() à Menghapus data dari paling atas
·         Top() à Mengambil data paling atas (disebut juga peek)

Dalam pengoperasiannya, ada 3 jenis operasi perhitungan:
·         Infix à operasi perhitungan dengan susunan operand dan operator yang berurutan
Contoh: 4 + 6 (5-2) / 3
·         Prefix à operasi perhitungan dengan susunan operator berada di sebelah kiri dari operand, komputer akan memprosesnya dari kanan ke kiri.
Contoh: mengubah 4 + 6 (5-2) / 3 ke prefix kita perlu mengetahui masing-masing tingkatan operator dari yang tertinggi
4 + 6 * (5 – 2) / 3        Operator ( ) merupakan operator tertinggi
- 5 2
4 + 6 * (5 – 2) / 3        Operator * merupakan operator tertinggi
* 6 - 5 2
4 + 6 * (5 – 2) / 3        Operator / merupakan operator tertinggi
/ * 6 – 5 2 3
4 + 6 * (5 – 2) / 3        Operator + adalah operator terakhir
+ 4 / * 6 - 5 2 3

·         Postfix à operasi perhitungan dengan susunan operator di sebelah kanan dari operand, komputer akan memprosesnya dari kiri ke kanan
Contoh: mengubah 4 + 6 (5-2) / 3 ke postfix kita perlu mengetahui masing-masing tingkatan operator dari yang tertinggi.
4 + 6 * (5 – 2) / 3        Operator ( ) merupakan operator tertinggi
5 2 -
4 + 6 * (5 – 2) / 3        Operator * merupakan operator tertinggi
6 5 2 - *
4 + 6 * (5 – 2) / 3        Operator / merupakan operator tertinggi
6 5 2 - * 3 /
4 + 6 * (5 – 2) / 3        Operator + adalah operator terakhir
4 6 5 2 - * 3 / +

Queue
                Secara harafiah, queue berarti antrian. Queue merupakan salah satu metode pengaturan data yang menggunakan sistem First In First Out (FIFO). Data yang pertama masuk, akan lebih dulu keluar/digunakan. Sebaliknya, data yang terakhir masuk, akan keluar/digunakan terakhir juga. Sebagai gambaran, ketika anda mengantri di sebuah loket untuk membeli karcis, maka anda akan mengantri terlebih dahulu, ke bagian paling belakang. Orang yang berada di paling depan akan dilayani terlebih dahulu, dan akan pergi saat itu juga. Lalu dilanjutkan orang kedua, sampai giliran anda (ketika tidak ada orang lagi) di bagian terakhir. Begitu juga dengan data. Data yang dimasukkan pertama akan berada di posisi paling depan/atas/kiri. Lalu ketika ingin menghapus data (pop) atau mengambil data paling atas (top), maka data pertama yang masuk duluan tadi akan diproses di awal.
            Operasi-operasi yang digunakan pada queue:
·         Push() à Menambah data baru ke paling belakang
·         Pop() à Menghapus data dari paling atas/depan
·         Top() à Mengambil data paling atas/depan