Array dan List
Array adalah struktur data yang menyimpan sekumpulan elemen bertipe sama dalam lokasi memori yang berurutan. Di Python, tipe datalist berperan seperti array dinamis yang dapat menampung berbagai tipe data sekaligus.
Di Python,
list bersifat dinamis — ukurannya dapat bertambah atau berkurang saat program berjalan. Berbeda dengan array statis di bahasa C/C++ yang ukurannya harus ditetapkan sejak awal.Stack
Stack (tumpukan) adalah struktur data yang mengikuti prinsip LIFO (Last In, First Out) — elemen yang terakhir dimasukkan adalah yang pertama dikeluarkan. Bayangkan seperti tumpukan piring: piring yang ditaruh paling atas adalah yang pertama diambil. Operasi utama Stack:- push → Memasukkan elemen ke atas tumpukan
- pop → Mengeluarkan elemen dari atas tumpukan
- peek / top → Melihat elemen teratas tanpa menghapusnya
- is_empty → Mengecek apakah stack kosong
Kapan menggunakan Stack?
Kapan menggunakan Stack?
Stack sangat berguna untuk:
- Undo/Redo pada aplikasi editor teks atau grafis
- Navigasi browser (tombol Back/Forward)
- Evaluasi ekspresi matematika (misal: konversi infix ke postfix)
- Rekursi — sistem secara internal menggunakan call stack untuk menyimpan state pemanggilan fungsi
- Pengecekan keseimbangan kurung
(),[],{}
Queue
Queue (antrian) adalah struktur data yang mengikuti prinsip FIFO (First In, First Out) — elemen yang pertama dimasukkan adalah yang pertama dikeluarkan. Persis seperti antrian di kasir: orang yang datang pertama akan dilayani pertama. Operasi utama Queue:- enqueue → Memasukkan elemen ke belakang antrian
- dequeue → Mengeluarkan elemen dari depan antrian
- front → Melihat elemen paling depan
Gunakan
collections.deque dari pustaka standar Python untuk implementasi queue yang efisien. Operasi popleft() pada deque berjalan dalam O(1), sedangkan pop(0) pada list biasa berjalan dalam O(n) karena semua elemen harus digeser.Linked List
Linked List (daftar berantai) adalah struktur data linear di mana setiap elemen (disebut node) menyimpan dua hal: data dan pointer yang menunjuk ke node berikutnya. Berbeda dengan array, linked list tidak memerlukan lokasi memori yang berurutan.Kelebihan Linked List
- Penyisipan dan penghapusan di awal/tengah berjalan O(1) jika pointer sudah diketahui
- Ukuran bersifat dinamis, tidak perlu ditetapkan di awal
- Penggunaan memori sesuai kebutuhan aktual
Kekurangan Linked List
- Akses elemen berdasarkan indeks berjalan O(n) — tidak bisa akses langsung
- Membutuhkan memori ekstra untuk menyimpan pointer setiap node
- Tidak cache-friendly karena node tersebar di memori
Pohon Biner
Pohon Biner (Binary Tree) adalah struktur data hierarkis di mana setiap node memiliki paling banyak dua anak: anak kiri dan anak kanan. Node paling atas disebut root, sedangkan node tanpa anak disebut leaf (daun).Jenis-Jenis Traversal Pohon Biner
Jenis-Jenis Traversal Pohon Biner
Kompleksitas Waktu
Kompleksitas waktu (time complexity) mengukur seberapa cepat suatu algoritma berjalan seiring bertambahnya ukuran input. Notasi Big-O digunakan untuk menyatakan batas atas pertumbuhan waktu eksekusi.Perbandingan Kompleksitas Operasi Struktur Data
*Jika pointer ke node sudah diketahui
†Rata-rata pada BST seimbang; O(n) pada kasus terburuk (pohon miring)