Rangkuman: Struktur Data Dasar
Pendahuluan
1. Pengertian Struktur Data
Struktur data adalah cara terorganisir untuk menyimpan dan mengelola data dalam komputer sehingga data tersebut dapat diakses dan dimodifikasi secara efisien. Pilihan struktur data yang tepat sangat mempengaruhi efisiensi (waktu dan ruang) dari algoritma yang beroperasi pada data tersebut.
Struktur data dan algoritma adalah dua pilar fundamental dalam ilmu komputer; keduanya saling melengkapi untuk membangun solusi yang efektif.
2. Mengapa Struktur Data Penting?
- Efisiensi: Memungkinkan operasi seperti pencarian, penyisipan, dan penghapusan data dilakukan dengan cepat.
- Organisasi Data: Menyediakan cara logis untuk menyusun data yang kompleks.
- Manajemen Memori: Membantu dalam penggunaan memori yang efisien.
- Dasar Algoritma: Banyak algoritma yang dirancang untuk bekerja dengan struktur data tertentu.
3. Jenis-Jenis Struktur Data Dasar
Berikut adalah beberapa struktur data dasar yang sering digunakan:
a. Array (Larai)
- Konsep: Kumpulan elemen data yang disimpan dalam lokasi memori yang berdekatan. Setiap elemen diakses melalui indeks.
- Karakteristik: Ukuran tetap (umumnya), akses elemen $O(1)$ (konstan) berdasarkan indeks, penyisipan/penghapusan di tengah array bisa lambat ($O(N)$).
- Aplikasi: Matriks, menyimpan data berurutan.
b. Linked List (Daftar Berantai)
- Konsep: Kumpulan node, di mana setiap node berisi data dan pointer (referensi) ke node berikutnya dalam urutan.
- Karakteristik: Ukuran dinamis, penyisipan/penghapusan $O(1)$ (jika posisi diketahui), akses elemen $O(N)$ (linear).
- Jenis: Singly Linked List, Doubly Linked List, Circular Linked List.
- Aplikasi: Implementasi Stack/Queue, manajemen memori.
c. Stack (Tumpukan)
- Konsep: Struktur data yang mengikuti prinsip LIFO (Last In, First Out). Operasi utama: Push (tambah elemen ke atas), Pop (hapus elemen dari atas), Peek (lihat elemen teratas).
- Karakteristik: Operasi Push/Pop $O(1)$.
- Aplikasi: Undo/Redo di aplikasi, manajemen panggilan fungsi (call stack), evaluasi ekspresi.
d. Queue (Antrian)
- Konsep: Struktur data yang mengikuti prinsip FIFO (First In, First Out). Operasi utama: Enqueue (tambah elemen ke belakang), Dequeue (hapus elemen dari depan).
- Karakteristik: Operasi Enqueue/Dequeue $O(1)$.
- Aplikasi: Penjadwalan tugas, buffer, simulasi.
e. Tree (Pohon)
- Konsep: Struktur data non-linear hierarkis yang terdiri dari node dan edge (sisi). Ada node akar, node anak, dan node daun.
- Karakteristik: Digunakan untuk merepresentasikan data hierarkis.
- Jenis: Binary Tree, Binary Search Tree (BST), AVL Tree, Red-Black Tree.
- Aplikasi: Sistem file, basis data (indeks B-tree), parsing ekspresi.
f. Graph (Graf)
- Konsep: Kumpulan simpul (vertices) dan sisi (edges) yang menghubungkan pasangan simpul. Dapat berarah (directed) atau tidak berarah (undirected), dan berbobot (weighted) atau tidak.
- Karakteristik: Merepresentasikan hubungan kompleks antar entitas.
- Representasi: Adjacency Matrix, Adjacency List.
- Aplikasi: Jaringan sosial, sistem GPS, jaringan komputer.
4. Hubungan dengan Algoritma
Struktur data yang berbeda mendukung operasi yang berbeda secara efisien. Memilih struktur data yang tepat adalah langkah pertama dalam merancang algoritma yang efisien. Misalnya:
- Algoritma pencarian jalur seperti BFS/DFS sangat bergantung pada representasi graf (adjacency list/matrix).
- Algoritma pengurutan seperti Merge Sort dan Quick Sort sering beroperasi pada array.
- Algoritma prioritas (seperti Dijkstra) menggunakan Priority Queue (sering diimplementasikan dengan heap, sejenis tree).
5. Kompleksitas Waktu Operasi Dasar
Berikut adalah perbandingan singkat kompleksitas waktu untuk operasi umum pada beberapa struktur data dasar (kasus rata-rata):
Struktur Data | Akses (Indeks/Posisi) | Pencarian | Penyisipan | Penghapusan
-----------------------------------------------------------------------------
Array | O(1) | O(N) | O(N) | O(N)
Linked List | O(N) | O(N) | O(1) | O(1)
Stack | O(1) | O(N) | O(1) | O(1)
Queue | O(1) (depan/belakang) | O(N) | O(1) | O(1)
BST (Avg) | O(log N) | O(log N) | O(log N) | O(log N)