Skip to main content
Struktur data adalah cara terorganisir untuk menyimpan, mengelola, dan mengakses data dalam memori komputer agar dapat diproses secara efisien. Pemilihan struktur data yang tepat sangat berpengaruh terhadap performa program — algoritma yang sama bisa berjalan ratusan kali lebih cepat hanya dengan menggunakan struktur data yang sesuai. Mata kuliah ini membahas berbagai struktur data fundamental beserta implementasinya dalam Python.

Array dan List

Array adalah struktur data yang menyimpan sekumpulan elemen bertipe sama dalam lokasi memori yang berurutan. Di Python, tipe data list 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
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).

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)
Tips Belajar Struktur Data: Jangan hanya menghafalkan kompleksitas — pahami mengapa suatu operasi memiliki kompleksitas tertentu. Cobalah gambar ilustrasi manual (misalnya node linked list atau level pohon) sebelum menulis kode. Visualisasi membantu pemahaman jauh lebih efektif daripada membaca saja. Gunakan situs VisuAlgo untuk animasi interaktif berbagai struktur data.