ALGORITMA STRUKTUR DATA
Modul 1 STRUKTUR DATA, ARRAY, POINTER, DAN STRUKTUR
- Konsep Dasar
Struktur Data
Struktur data adalah sebuah bagian dari ilmu
pemrograman dasar yang mempunyai karakteristik yang terkait dengan sifat dan
cara penyimpanan sekaligus penggunaan atau pengaksesan data.
Struktur data bertujuan agar cara mempresentasikan
datadalam membuat program dapat dilakukan secara efisien dalam pengolahan di
memori dan pengolahan penyimpanan dari program ke storage juga lebih mudah
dilakukan.
- Konsep Dasar
Array
Array adalah kumpulan elemen-elemen data. Kumpulaan
elemen tersebut mempunyai suusnan tertentu yang teratur. Jumlah elemen
terbatas, dan semua elemen mempunyai tipe data yang sama. Jenis-jenis array:
Array Satu Dimensi
Struktur array satu dimensi dapat dideklarasikan
dengan bentuk umum berupa : tipe_var nama_var[ukuran];
Dengan :
-
Tipe_var : untuk
menyatakan jenis elemen array (misalnya int, char, unsigned).
-
Nama_var : untuk
menyatakan nama variabel yag dipakai.
-
Ukuran : untuk menyatakan
jumlah maksimal elemen array.
Contoh : float nilai_ujian[5];
Array Dua Dimensi
Tipe data array dua dimensi biasa digunakan untuk
menyimpan, mengolah maupun menampilkan suatu data dalam bentuk table atau matriks.
Untuk mendeklarasikan array agar dapat menyimpan data adalah :
Tipe_var nama_var[ukuran1][ukuran2];
Dimana :
-
Ukuran 1 menunjukkan
jumalah/nomor baris.
-
Ukuran 2 menunjukkan
jumlah/nomor kolom.
Jumlah elemen yang dimiliki array dua dimensi dapat
ditentukan dari hasil perkalian :
Ukuran1 x ukuran2.
Seperti halnya pada array satu dimensi, data array dua
dimensi akan ditempatkan pada memori secara berurutan.
Array Multidimensi / Dimensi Banyak
Array berdimensi banyak atau multidimensi terdiri
array yang tidak terbatas hanya dua dimensi saja. Bentuk umum pendeklarasian
array multidimesni adalah : tipe_var nama_var[ukuran1][ukuran2]…[ukurann];
Contoh : int data_angaka[3][6][6];
Yang merupakan array tiga dimensiModul 2 LINKED LIST (SENARAI)
Linked list adalah sejumlah objek atau elemen yang dihubungkan satu dengan lainnya sehingga membentuk suatu list. Sdangkan objek atau elemen itu sendiri adalah merupakan gabungan beberapa data (variabel) yang dijadikan satu kelompok atau structure atau record yang dibentuk dengan perintah struct. Untuk menggabungkan objek satu dengan lainnya, diperlukan paling tidak sebuah variabel yang bertipe pointer. Syarat linked list adalah harus adapat diketahui alamat simpul pertama atau biasa dipakai variabel First/Start/Header.
Istilah –
istilah dalam linked list :
-
Simpul
Simpul terdiri dari dua bagian
yaitu :
a. Bagian data
b. Bagian pointer yang menunjuk ke
simpul berikutnya
-
First/Header
Variabel
First/Header berisis alamat (pointer)/acuan
(reference) yag menunjuk lokasi
simpul pertama linked list, digunakan
sebagai awal penelusuran linked list.
-
Nil/Null
Tidak
bernilai, digunakan untuk menyatakan tidak mengacu ke manapun.
-
Simpul Terakhr (Last)
Simpul
terakhir linked list berari tidak menunjuk simpul berikutnya. Tidak terdapat
alamat disimpan di field pointer
(bagian kedua dari simpul). Nilai null atau nil disimpan di field pointer di simpul terakhir.
Modul 3 STACK (TUMPUKAN)
Stack
adalah kumpula elemen-elemen yang tersimpan dalam suatu tumpukan. Aturan
penyisispan dan penghapusan elemennya tertentu :
-
Penyisispan selalu
dilakukan “di atas “ TOP
-
Penghapusan selalu
dilakukan pada TOP
Karena
aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat
tempat terjadi operasi, elemen yang ditambahkan paling akhir akan menjadi
elemen yang akan dihapus. Dikatakan bahwa elemen Stack tersususn secara LIFO (Last In First Out).
Seperti
halnya jika kita mempunyai sebuah tumpukan buku, agar tumpukan buku itu tidak
ambruk ketika kita mengambil sebuah buku di dalam tumpukan itu amaka harus
diambil satu per satu dari tumpukan yang paling atas dari tumpukan.

Gambar 3.1 Ilustrasi Stack
Perhatikan bahwa dengan definsi
semacam ini, representasi tabel sangat tepat untuk mewakili stack, karena
operasi penambahan dan pengurangan hanya dilakukan disalah satu ujung tabel.
Beberapa contoh penggunaan stack
adalah pemanggilan prosedur, perhitugan ekspresi aritmatika, rekursifitas,
backtracking, peaganan interupsi, dan lain-lain. Karakteristik penting stack
sebagai berikut :
- Elemen stack yaitu item-item
data di elemen stack
- TOP (elemen puncak dari stack)
- Jumlah elemen pada stack
- Status/kondisi stack,
Modul 4 QUEUE (ANTRIAN)
Antrian adalah suatu kumpulan data yang penambahan
elemenya hanya bisa dilakukan pada suatu ujung (disebut sisi belakang atau
REAR), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain
(disebut sisi depan atau FRONT). Prinsip yang digunakan
dalam antrian ini adalah FIFO (First In
First Out) yaitu elemen yang pertama kali masuk akan keluar pertama
kalinya.
Penggunaan
antrian antara lain simulasi antrian di dunia nyata (antrian pembelian tiket),
sistem jaringan computer (pemrosesan banyak paket yang dating dari banyak
koneksi pada host, bridge, gateway),
dan lain-lain.

Gambar 4.1 Ilustrasi Antrian
dengan 8 Elemen
Karakteristrik penting antrian
sebagai berikut :
- Elemen antrian yaitu
item-item data yang terdapat dalam antrian.
- Head/front (elemen terdepan antrian).
- Tail/rear (elemen terakhir antrian).
- Jumlah antrian pada antrian (count).
- Status/kondisi antrian, ada
dua yaitu :
-
Penuh
Bila
elemen di antrian mencapai kapasitas maksimum antrian. Pada kondisi ini, tidak
mungkin dilakukan penambahan ke antrian. Penambahan di elemen menyebabkan
kondisi kesalahan Overflow.
-
Kosong
Bila tidak
ada elemen antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan
elemen antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.
Modul 5 REKURSIF
Fungsi
rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi
tersebut dipanggil di dalam tubuh fungsi itu sendiri. Contoh menghitung nilai
factorial. Rekursif sangat memudahkan untuk memecahkan permasalahan yang
kompleks. Sifat- sifat rekursif :
-
Dapat digunakan ketika
inti dari masalah terjadi berulang kali.
-
Sedikit
lebih efisian dari iterasi tapi lebih elegan.
-
Method-methodnya
dimungkinkan untuk memanggil dirinya sendiri.
Data yang berada dalam method tersebut seperti
argument disimpan sementara ke dalam stack sampai method pemanggil diselesaikan.
Modul 6 SORTING (PENGURUTAN)
Pengurutan
data (sorting) didefinisikan sebagai suatu proses untuk
menyusun kembali himpunan obyek menggunkan aturan tertentu. Ada dua macam urutan yang bisa digunakan dalam proses
pengurutan yaitu :
- Urutan
naik (ascending) yaitu dari data
yang mempunyai nilai paling kecil sampai paling besar.
- Urutan
turun (descending) yaitu dari
data yang mempunyai nilai paling besar sampai paling kecil.
Contoh
: data bilangan 5, 2, 6, dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6 atau
diurutkan menjadi 6, 5, 4, 2. Pada data yang bertipe char, nilai data dikatakan
lebih kecil atau lebih besar dari yang lain didasarkan pada urutan relative (collating sequence) seperti dinyatakan
dalam tabel ASCII. Keuntungan dari data yang sudah dalam keadaan terurut yaitu
:
Data mudah dicari, mudah untuk dibetulkan, dihapus,
disisipi atau digabungakan. Dalam keadaan terurutkan, kita mudah melakukan
pengecekan apakah ada data yang hilang. Misalnya kamus Bahasa, buku telepon.
Mempercepat proses pencarian data yang harus dilakukan berulang kali.
Beberapa factor yang berpengaruh pada efektifitas suatu
algoritma pengurutan antara lain :
-
Banyak data yang
diurutkan.
-
Kapasitas pengingat
apakah mampu menyimpan semua data yang kita miliki.
-
Tempat penyimpanan data,
misalnya piringan, pita tau kartu, dll.
Beberapa algoritma metode pengurutan dan prosedurnya sebagai
berikut :
- Bubble Sort
Bubble Sort adalah suatu metode pengurutan yang
membandingkan elemen yang sekarang dengan elemen berikutnya. Apabila elemen
sekarang > elemen berikutnya, maka posisinya ditukar. Kalua tidak, tidak
perlu ditukar. Diberi nama “Bubble” karena proses pengurutan secara
berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung
yang keluar dari sebuah gelas bersoda.
Proses Bubble Sort:
Data paling akhir dibandingkan dengan data di
depanya, jika ternyata lebih kecil atau besar maka tukar sesuai dengan kekuatan
( descending atau ascending). Dan pengecekan yang sama dilakukan terhadap data
yang selanjutnya sampai data yang paling awal.
umsida.ac.id | sim.umsida.ac.id