Skip to content

Struktur Data

  • by

Mata kuliah Struktur Data mempelajari bagaimana cara menyimpan, mengatur, dan mengakses data secara efisien di dalam memori komputer. Struktur data merupakan elemen kunci dalam pengembangan algoritma yang efektif, dan penting untuk mengoptimalkan performa perangkat lunak. Berikut adalah topik-topik utama yang biasanya dipelajari dalam mata kuliah Struktur Data:

1. Pengantar Struktur Data

  • Definisi dan Pentingnya Struktur Data: Pengertian dasar struktur data, peran dan pentingnya dalam pemrograman dan pengembangan perangkat lunak.
  • Klasifikasi Struktur Data: Memahami perbedaan antara struktur data primitif (integer, float, char, dll.) dan struktur data non-primitif (array, linked list, tree, graph, dll.).

2. Array

  • Pengertian Array: Struktur data linear yang menyimpan elemen-elemen dalam urutan yang bersebelahan di memori.
  • Pengaksesan Elemen: Bagaimana mengakses, menambahkan, dan menghapus elemen dalam array.
  • Kelebihan dan Keterbatasan Array: Analisis kelebihan, seperti kemudahan pengaksesan langsung, dan kekurangannya, seperti ukuran yang tetap.

3. Linked List

  • Pengertian Linked List: Struktur data linear yang terdiri dari elemen-elemen (node) yang masing-masing memiliki pointer ke elemen berikutnya.
  • Single Linked List: Linked list yang hanya memiliki pointer ke node berikutnya.
  • Double Linked List: Linked list yang memiliki pointer ke node sebelumnya dan node berikutnya.
  • Circular Linked List: Linked list di mana node terakhir menunjuk kembali ke node pertama.
  • Operasi pada Linked List: Insertion, deletion, traversal, dan searching pada linked list.

4. Stack

  • Pengertian Stack: Struktur data linear dengan prinsip LIFO (Last In, First Out).
  • Operasi pada Stack: Push, Pop, Peek, dan isEmpty.
  • Implementasi Stack: Menggunakan array atau linked list.
  • Aplikasi Stack: Penggunaan stack dalam algoritma seperti pengecekan kurung pada ekspresi matematika, backtracking, dan konversi notasi (infix, postfix).

5. Queue

  • Pengertian Queue: Struktur data linear dengan prinsip FIFO (First In, First Out).
  • Jenis Queue: Queue sederhana, circular queue, dan deque (double-ended queue).
  • Operasi pada Queue: Enqueue, Dequeue, Peek, dan isEmpty.
  • Aplikasi Queue: Sistem antrian pada printer, penjadwalan CPU, dan simulasi antrian.

6. Hashing

  • Konsep Hashing: Teknik untuk memetakan data ke lokasi penyimpanan menggunakan fungsi hash.
  • Hash Function: Fungsi yang memetakan input data ke lokasi memori.
  • Collision Handling: Teknik untuk menangani tabrakan (collision) dalam hashing, seperti chaining dan open addressing.
  • Aplikasi Hashing: Implementasi tabel hash, struktur data yang sangat cepat untuk pencarian, penyisipan, dan penghapusan.

7. Tree (Pohon)

  • Pengertian Tree: Struktur data hirarkis yang terdiri dari node dengan hubungan parent-child.
  • Binary Tree: Pohon di mana setiap node memiliki paling banyak dua anak.
  • Binary Search Tree (BST): Pohon biner di mana nilai pada node kiri lebih kecil daripada parent, dan nilai di node kanan lebih besar.
  • Operasi pada Binary Tree dan BST: Insertion, deletion, searching, traversal (preorder, inorder, postorder).
  • AVL Tree: Pohon biner pencarian yang seimbang secara otomatis.
  • Heap: Struktur data yang berbasis pohon biner, digunakan untuk implementasi struktur data antrian prioritas.

8. Graph (Graf)

  • Pengertian Graf: Struktur data yang terdiri dari node (vertex) yang dihubungkan oleh edge.
  • Representasi Graf: Menggunakan matriks ketetanggaan (adjacency matrix) atau daftar ketetanggaan (adjacency list).
  • Jenis Graf: Graf berarah (directed graph), graf tidak berarah (undirected graph), graf berbobot (weighted graph).
  • Traversal Graf: Algoritma Depth-First Search (DFS) dan Breadth-First Search (BFS).
  • Aplikasi Graf: Pencarian jalur terpendek, analisis jaringan sosial, routing di jaringan komputer.

9. Algoritma Sortir (Sorting)

  • Bubble Sort: Algoritma penyortiran sederhana dengan cara membandingkan pasangan elemen berdekatan dan menukarnya jika tidak dalam urutan.
  • Selection Sort: Algoritma yang secara berulang memilih elemen terkecil dari bagian yang tidak disortir dan menempatkannya di posisi yang benar.
  • Insertion Sort: Algoritma yang membangun array yang diurutkan dengan cara menyisipkan elemen pada posisi yang tepat.
  • Merge Sort: Algoritma penyortiran berbasis rekursif yang membagi array menjadi dua bagian, mengurutkannya, dan menggabungkannya kembali.
  • Quick Sort: Algoritma berbasis rekursif yang memilih elemen pivot dan mempartisi array berdasarkan pivot tersebut.
  • Heap Sort: Algoritma penyortiran yang menggunakan struktur heap untuk mendapatkan elemen dengan urutan.

10. Algoritma Pencarian (Searching)

  • Linear Search: Algoritma pencarian sederhana yang memeriksa setiap elemen satu per satu hingga elemen yang dicari ditemukan.
  • Binary Search: Algoritma pencarian yang efisien untuk array yang sudah diurutkan, menggunakan prinsip divide and conquer.
  • Interpolation Search: Algoritma pencarian yang lebih efisien daripada binary search dalam kasus distribusi elemen yang merata.

11. Rekursi

  • Konsep Rekursi: Fungsi yang memanggil dirinya sendiri untuk menyelesaikan masalah.
  • Contoh Rekursi: Faktorial, Fibonacci, dan rekursi pada struktur data seperti pohon.
  • Masalah Rekursi dan Iterasi: Analisis kapan menggunakan rekursi dan kapan lebih baik menggunakan iterasi.

12. Complexity Analysis

  • Big-O Notation: Analisis kompleksitas algoritma berdasarkan waktu eksekusi atau ruang yang digunakan seiring bertambahnya ukuran input.
  • Kompleksitas Waktu dan Ruang: Memahami bagaimana efisiensi algoritma dipengaruhi oleh faktor waktu dan ruang.
  • Analisis Kasus Terburuk, Kasus Rata-Rata, dan Kasus Terbaik: Menghitung dan membandingkan performa algoritma dalam situasi yang berbeda.

13. Aplikasi Struktur Data

  • Struktur Data dalam Pemrograman: Penerapan struktur data dalam bahasa pemrograman seperti C, C++, Java, Python, dan bagaimana memilih struktur data yang tepat berdasarkan masalah yang dihadapi.
  • Penggunaan dalam Dunia Nyata: Aplikasi struktur data dalam pengembangan perangkat lunak seperti mesin pencari, sistem file, permainan, dan sistem rekomendasi.

Mata kuliah ini melatih keterampilan berpikir algoritmik dan pemahaman mendalam tentang cara memilih dan menerapkan struktur data yang efisien untuk berbagai jenis masalah pemrograman.