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
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
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 :
- Antrian.
- Sistem
First In First Out (FIFO).
- 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