Linked List adalah suatu struktur data linier. Linked List sendiri dibentuk secara dinamik. Pada awal program dijalankan elemen linked list belum data. Elemen linked list (disebut node) dibentuk sambil jalan sesuai instruksi. Node yang ada pada Linked List diakses dengan cara menggunakan pointer yang mengacu (menunjuk) ke node tersebut.
Didalam Linked List terdapat juga istilah head dan tail.
- Head merupakan elemen yang berada di posisi terdepan atau kepala.
- Tail merupakan elemen yang berada di posisi paling belakang atau ekor.
Linked List sendiri terbagi menjadi beberapa jenis :
1.Single Linked List
- Single Linked List adalah sekumpulan dari node yang saling terhubung dengan node lain melalui sebuah pointer. Rangkaian single linked list tersebut diawali dengan sebuah head untuk menyimpan alamat awal dan di akhiri dengan node yang mengarah pointer ke null.
- Single Linked List hanya memiliki satu arah dan tidak memiliki dua arah atau bulak balik, dua arah tersebut disebut dengan double linked list.
- Double Linked List merupakan sebuah linked list yang memiliki dua variabel pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tail juga menunjuk ke NULL.
Terdapat juga keuntungan dan kerugiaan saat kita menggunakan Linked List:
-Keuntungan:- Jenis data yang berbeda dapat di-link.
- Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya saja.
- Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.
- Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.
Stack merupakan salah satu struktur data yang sistem kerjanya LIFO (Last In First Out) yang dimana bermaksud data yang terakhir masuk juga merupakan data yang pertama kali keluar. Data hanya dapat diakses melalui satu titik saja yaitu atas atau biasa disebut sebagai TOP. Stack sendiri dapat diilustrasikan seperti saat kita akan mencuci piring , tumpukan piring teratas yang akan kita cuci terlebih dahulu.
Fungsi-fungsi yang terdapat di dalam stack:
- Push : digunakan untuk menambah item pada stack pada tumpukan paling atas.
- Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas.
- Clear : digunakan untuk mengosongkan stack.
- Create stack : digunakan untuk membuat tumpukan S baru, dengan jumlah elemen kosong.
- MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen dihapus.
- IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
- Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.
Queue adalah kumpulan data yang dimana penambahan datanya hanya dapat melalu satu sisi, yaitu dari belakang atau juga biasa disebut sebagai TAIL dan pengahapusan data hanya dapat dilakukan dari sisi sebaliknya yaitu depan atau bisa disebut sebagai HEAD. Sistem kerja pada Queue adalah FIFO(First In First Out) yang bermaksud data yang pertama kali dimasukkan akan menjadi data pertama juga yang keluar.
Fungsi-fungsi yang terdapat pada Queue:
- Create() : berfungsi untuk menciptakan dan menginisialisasikan Queue.
- IsEmpty() : berfungsi untuk memeriksa apakah antrian kosong.
- IsFull() : berfungsi untuk mengecek apakah antrian sudah penuh.
- Enqueue() : berfungsi untuk menambahkan elemen (penambahan elemen selalu ditambahkan di elemen paling belakang)
- Dequeue() : berfungsi untuk menghapus elemen terdepean atau HEAD dari antrian.
- Clear() : berfungsi untuk menghapus elemen-elemen antrian dengan cara membuat TAIL dan HEAD = -1.
- Tampil() : Untuk menampilkan nilai-nilai elemen antrian.
Binary Search Tree (BST) merupakan sebuah konsep untuk penyimpanan data , yang dimana data yang disimpan dalam bentuk tree(pohon) yang setiap node yang memiliki anak maksimal 2 anak / 2 node. Kegunaan dari Binary Search Tree (BST) juga untuk melakukan pencarian dan melakukan sorting secara lebih efisien.
Ciri-ciri dari Binary Search Tree (BST) adalah:
1.Value dari node kiri lebih kecil dibandingkan rootnya.
2.Value dari node kanan lebih besar dibandingkan dengan rootnya.
3.Setiap node harus memiliki value dan tidak ada valuenya yang berisikan double/float.
Fungsi-fungsi yang terdapat di dalam Binary Search Tree (BST):
1.Find(x) = Berfungsi untuk melakukan pencarian value (x) pada BST.
2.Insert(x) = Berfungsi untuk memasukkan value (x) yang baru ke dalam BST.
3.Remove(x) = Berfungsi untuk menghapus value (x) yang ada di dalam BST.
Fungsi Find(x) / Mencari Data
-) Memulai pencarian dari root.
-) Jika root adalah value yang kita cari , maka program selesai.
-) Jika x lebih besar dari root maka akan mencari secara rekursif ke tree sebelah kanan.
-) Jika x lebih kecil dari root maka akan mencari secara rekursif ke tree sebelah kiri.
Fungsi Insert(x) / Memasukkan Data
-)Dimulai dari root pertama.
-) Jika x lebih kecil dari node value kemudian mengecek dengan subtree sebelah kiri lakukan pengecekan secara rekursif.
-) jika x lebih besar dari node value kemudian mengecek dengan subtree sebelah kanan lakukan pengecekan secara rekursif.
-) Lakukan secara terus menerus hingga mendapatkan node yang kosong lalu diisi.
Fungsi Remove(x) / Menghapus Data
-) Jika value yang ingin dihapus merupakan leaf(daun) atau paling bawah. maka value akan langsung di remove.
-) Jika value yang ingin dihapus mempunyai 1 anak, maka hapus nodenya dan gabungkan anaknya ke parent yang belum dihapus.
-)Jika value yang akan dihapus mempunyai 2 anak, maka ada 2 cara yaitu:
1.Node akan digantikan oleh node paling kiri dari subtree kanan.
2.Node dapat digantikan oleh node paling kanan dari subtree kiri.
Tidak ada komentar:
Posting Komentar