Struktur Data adalah cara mengorganisasi, mengelola, dan menyimpan data sehingga data dapat digunakan secara efisien. Dalam ilmu komputer, struktur data merupakan fondasi penting untuk menyelesaikan masalah, karena desain algoritma yang efektif bergantung pada struktur data yang tepat.
Organisasi Data
Memungkinkan penyimpanan data secara teratur sehingga mudah diakses dan dimodifikasi.
Efisiensi Operasi
Mengoptimalkan waktu dan ruang yang dibutuhkan untuk operasi seperti pencarian, penyisipan, penghapusan, atau pengurutan.
Implementasi Algoritma
Algoritma sering membutuhkan struktur data untuk bekerja, misalnya antrian pada algoritma BFS atau tumpukan pada algoritma rekursif.
Struktur data dikategorikan menjadi dua kelompok utama: Linear dan Non-Linear.
1. Struktur Data Linear
Data disusun dalam urutan tertentu (garis lurus). Contoh:
Array
Koleksi elemen yang memiliki tipe data yang sama dan disimpan pada lokasi memori berurutan.
Operasi: Akses cepat (O(1) untuk indeks langsung), tetapi sulit untuk menyisipkan atau menghapus elemen.
Contoh penggunaan: Penyimpanan data statis seperti matriks.
Linked List
Koleksi elemen yang disebut nodes, di mana setiap node berisi data dan pointer ke node berikutnya.
Operasi: Penyisipan/penghapusan lebih mudah dibanding array, tetapi akses lebih lambat (O(n)).
Contoh penggunaan: Implementasi antrian atau daftar dinamis.
Stack
Struktur data berbasis LIFO (Last In First Out).
Operasi utama:
Push: Menambahkan elemen ke atas tumpukan.
Pop: Menghapus elemen dari atas tumpukan.
Contoh penggunaan: Pemrosesan ungkapan aritmatika, fungsi rekursi.
Queue
Struktur data berbasis FIFO (First In First Out).
Operasi utama:
Enqueue: Menambahkan elemen ke akhir antrian.
Dequeue: Menghapus elemen dari awal antrian.
Contoh penggunaan: Sistem antrean, algoritma BFS.
2. Struktur Data Non-Linear
Data tidak disusun secara berurutan, tetapi dalam hubungan hierarkis atau jaringan. Contoh:
Tree
Struktur data hierarkis dengan node yang memiliki hubungan induk-anak.
Jenis:
Binary Tree
Binary Search Tree (BST)
AVL Tree (Self-balancing BST)
Heap (Binary Heap, Min/Max Heap)
Contoh penggunaan: Struktur direktori, parsing ekspresi, atau database indexing.
Graph
Koleksi simpul (vertices) dan hubungan antar simpul (edges).
Representasi:
Adjacency List
Adjacency Matrix
Contoh penggunaan: Jaringan sosial, algoritma rute terpendek (Dijkstra, A*).
Array
Aplikasi: Matriks, tabel data, pengurutan elemen.
Stack
Aplikasi: Pengolahan notasi postfix, implementasi fungsi rekursif.
Queue
Aplikasi: Sistem antrean pelanggan, algoritma BFS.
Tree
Aplikasi: Representasi hierarki (sistem file), algoritma Huffman (kompresi data).
Graph
Aplikasi: Jaringan komputer, algoritma jalur terpendek.