#09 STRUKTUR DATA

A. Apa itu Struktur Data?

Struktur data adalah cara mengatur, menyimpan, dan mengelola data agar dapat digunakan dengan efisien oleh program.

Struktur data membantu:

  • menyimpan banyak data sekaligus
  • mengelompokkan data berdasarkan tipe
  • mempermudah proses pencarian
  • mempercepat pengolahan data

Contoh struktur data:

  • Array
  • Linked List
  • Stack
  • Queue
  • Tree
  • Graph

Di kelas X, fokus utama adalah array dan pointer.

Analogi Struktur Data

Bayangkan lemari arsip kantor:

  • Setiap laci punya kategori
  • Setiap folder punya tempat khusus
  • Dokumen disusun rapi agar mudah dicari

Jika data tidak diatur, hasilnya akan berantakan dan program bekerja lebih lambat.


B. PERBEDAAN STRUKTUR DATA STATIS DAN DINAMIS

Jenis Pengertian Kelebihan Kekurangan Contoh
Struktur Data Statis Ukuran tetap dan ditentukan di awal Cepat, sederhana, mudah dikelola Tidak fleksibel, boros memori jika kebesaran Array
Struktur Data Dinamis Ukuran dapat berubah saat program berjalan Fleksibel, hemat memori Sedikit lebih kompleks Linked list, vector (C++ STL), stack dinamis

Analogi

Statis → Seperti kotak makan 3 ruang. Ruang tidak bisa diubah—selalu tetap.
Dinamis → Seperti tas ransel yang dapat mengembang sesuai isi (fleksibel).


C. PENGERTIAN ARRAY

Array adalah struktur data statis yang digunakan untuk menyimpan banyak data dengan tipe yang sama, disimpan dalam sebuah deretan tempat.

Setiap data disimpan pada indeks (nomor posisi mulai dari 0).

Analogi Array

Array itu seperti rak sepatu bertingkat:

  • Semua slot hanya untuk sepatu
  • Setiap slot punya nomor (indeks)
  • Kamu bisa mengambil sepatu berdasarkan nomor slotnya

Rak sepatu = array
Slot rak = indeks
Sepatu = data


D. INISIASI ARRAY

Cara Deklarasi
int nilai[5];
Artinya: membuat array yang berisi 5 data integer.
Cara Inisialisasi (mengisi array)
int nilai[5] = {80, 90, 75, 88, 92};

Bisa juga diisi per elemen:

nilai[0] = 80;
nilai[1] = 90;
// ...dst

E. DIMENSI ARRAY

1. Array 1 Dimensi

Digunakan untuk menyimpan data dalam satu baris atau daftar tunggal.

Contoh:
int angka[4] = {10, 20, 30, 40};
Cara mengakses:
cout << angka[2];   // Output: 30

2. Array 2 Dimensi

Array 2 dimensi adalah array yang memiliki baris dan kolom, seperti tabel atau matriks.

Contoh:
int matriks[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
Artinya:
  • 2 baris
  • 3 kolom
Cara mengakses:
cout << matriks[1][2];  // Output: 6
Analogi Array 2 Dimensi

Bayangkan papan catur:

  • Baris
  • Kolom
Setiap kotak punya posisi (baris, kolom).

G. POINTER (PENTING UNTUK DASAR PPLG)

1. Pengertian Pointer

Pointer adalah variabel khusus yang menyimpan alamat memori dari variabel lain. Jadi pointer bukan menyimpan nilai, tetapi alamat variabel di memori.

2. Analogi Pointer

Pointer itu seperti alamat rumah.

  • Variabel = rumah berisi orang
  • Pointer = kertas yang berisi alamat rumah itu
  • Yang kamu simpan di pointer bukan orangnya, tetapi alamat rumahnya

Jika rumah berpindah atau nilainya berubah, alamat tetap sama.

3. Deklarasi Pointer dalam C++

int angka = 10;
int *ptr = &angka;

Penjelasan:

  • angka adalah variabel biasa
  • ptr adalah pointer
  • &angka adalah alamat memori tempat angka disimpan

4. Mengakses nilai melalui pointer

cout << *ptr;  // Output: 10

Tanda * disebut dereference operator yang berarti “ambil nilai dari alamat ini”.

5. Perubahan nilai melalui pointer

*ptr = 20;
cout << angka;   // Hasil: 20
Karena pointer mengarah ke alamat angka, nilai angka ikut berubah.


H. STUDI KASUS AKHIR

Studi Kasus: Menyimpan Nilai 5 Siswa

Versi Array

#include <iostream>
using namespace std;

int main() {
    int nilai[5];

    cout << "Masukkan nilai 5 siswa:\n";

    for (int i = 0; i < 5; i++) {
        cin >> nilai[i];
    }

    cout << "\nData nilai siswa:\n";
    for (int i = 0; i < 5; i++) {
        cout << "Nilai ke-" << i+1 << ": " << nilai[i] << endl;
    }
}

 Studi Kasus: Pointer Mengakses Nilai

#include <iostream>
using namespace std;

int main() {
    int umur = 17;
    int *p = &umur;

    cout << "Alamat memori umur: " << p << endl;
    cout << "Nilai umur melalui pointer: " << *p << endl;
}

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak