A.
PENGERTIAN STRUKTUR DATA
Struktur data memegang
peran penting dalam teknik pemrograman. Pemilihan struktur data yang tepat
dapat meningkatkan efisiensi dan efektifitas sebuah program. Dalam teknik
pemrograman, Struktur data adalah tata letak data yang berisi kolom-kolom data,
baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang
hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.
Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record).
Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya
berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang
lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan
untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk
pengolah kata (word processor) yang kolomnya berubah secara dinamis.
Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet),
pangkal data (database), pengolahan kata, citra yang dipampat
(dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan
struktur data.
Dalam pengertian lain,
Struktur Data dapat juga disebut sebagai suatu kumpulan objek-objek data yang
memiliki aturan (terorganisir) yang kemudian di golongkan berdasarkan operasi-operasi
untuk memanipulasinya. Contoh objek data tersruktur adalah Array, Record,
Stack, Queue, Tree,dll.
1. Atribut-Atribut
Penting Untuk Suatu Tipe Data Terstuktur Yakni :
a.
Jumlah Komponen
Berdasarkan
jumlah komponen selama eksekusi program, maka dapat dikelompokkan menjadi :
· Struktur Data Statis (Jumlah komponennya tidak
berubah), seperti Array, Record, himpunan.
· Struktur Data Dinamis (Jumlah komponennya dapat
berubah), seperti List, Queue, Stack.
b. Tipe untuk setiap
komponennya
Apabila
tipe data untuk seluruh komponennya harus sama, maka disebut Struktur Data
Homogen, dan bila dimungkinkan komponennya mempunyai tipe data yang
berbeda-beda, maka disebut Struktur Data Heterogen.
c. Nama-nama untuk memilih
komponen
Hampir
semua struktur data menyediakan operasi untuk mengakses komponen secara
individu. Pada suatu array (kumpulan data yang mempunyai tipe sama), hal ini
dilakukan dengan sebuah indeks berupa angka.
d. Jumlah maksimum komponen
Tidak
semua jenis struktur data harus ditentukan jumlah maksimum komponen, namun
untuk sebuah tipe data dinamis mungkin perlu ditentukan dengan jelas.
e. Pengorganisasian semua
komponennya
Susunan
yang paling umum adalah berupa barisan linier seperti pada array berdimensi 1,
record, list, stack dan file. Selanjutnya ada yang dapat dikembangkan menjadi
struktur non linier seperti array multi dimensi dan juga pohon/tree.
2. Kegunaan
1)
Memudahkan dalam memahami dan memecahkan
masalah algoritma
2)
Meningkatkan efisiensi memori saat program kompute r sedang bekerja
3)
Proses reservasi memori yang
tidak perlu akan diminimalisasi
B. JENIS - JENIS STRUKTUR DATA
1. Struktur Data Sederhana
(Primitif)
a. Integer
Tipe
data "Int" yaitu bilangan bulat dengan jangkauan nilai antara
-2147483648 sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar
4 byte.
b. Short
Tipe
data "Short" yaitu bilangan bulat dengan jangkauan nilai antara
-32768 sampai dengan 32767. Tipe data ini membutuhkan memori sebesar 2 byte.
Tipe ini bisa digunakan untuk memproses umur seseorang.
c. Long
Tipe
data "Long" yaitu bilangan bulat dengan jangkauan nilai antara -2147483648
sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar 4 byte.
d. Long
Long
Tipe
data "Long Long" yaitu bilangan bulat dengan jangkauan nilai antara
-9232372036854775808 sampai dengan 9232372036854775807. Tipe data ini
membutuhkan memori sebesar 8 byte. Tipe data ini bisa digunakan untuk memproses
keuangan.
e. Float
Tipe
data "Float" yaitu bilangan real dengan ketelitian rendah yaitu 6-7
digit serta memiliki jangkauan nilai antara 10-38 sampai
dengan 1038 Tipe data ini membutuhkan memori sebesar 4
byte. Tipe ini bisa digunakan untuk menghitung volume atau luas suatu bangun.
f. Double
Tipe
data "Double" yaitu bilangan real dengan ketelitian tinggi yaitu 15
digit serta memiliki jangkauan nilai antara 10-308 sampai
dengan 10308. Tipe data ini membutuhkan memori sebesar 8 byte.
g. Boolean
Tipe
data "Bool" yaitu Nilai logika yang bernilai true (benar) dan false
(salah). Tipe data ini membutuhkan memori sebesar 1 byte.
h. Character
Tipe
data "Char" yaitu sebuah karakter. Tipe data ini membutuhkan memori
sebesar 1 byte. Tipe ini bisa digunakan untuk pembuatan password.
2. Struktur Data Majemuk
(Non-Primitif)
a. Linear
1)
Array
(Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen
yang bertipe
sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap elemen dapat
diakses langsung melalui indeksnya. Indeks larik harus berupa tipe data
yang berurutan (misalnya integer atau karakter) dan banyaknya elemen larik
harus diketahui dahulu sebelum program dieksekusi.
2)
Stack
Pengertian
Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman
yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke
dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
Stack
(Tumpukan) adalah list linear yang dikenali elemen puncaknya (TOP) dan Aturan
penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di
atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
OPERASI-OPERASI/FUNGSI
STACK :
·
Push : digunakan untuk menambah item pada stack
pada tumpukan paling atas.
·
Pop : digunakan
untuk mengambil item pada stack pada tumpukan paling atas.
·
Clear : digunakan untuk mengosongkan stack.
·
IsEmpty : fungsi yang digunakan untuk mengecek
apakah stack sudah kosong.
·
IsFull : fungsi yang digunakan untuk mengecek
apakah stack sudah penuh.
3)
Queue
Queue
pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan
elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear),
dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan
sisi depan atau front).
Queue
atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau
FIFO (First In First Out).
Queue
atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil
diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang
komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan
menggunakan sistem tersebut secara serempak.
Pada
Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah
pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail (
depan/front, belakang/rear).
KARAKTERISTIK QUEUE
(ANTRIAN) :
·
Elemen antrian.
·
Front (elemen terdepan antrian).
·
Tail (elemen terakhir).
·
Jumlah elemen pada antrian.
·
Status antrian
OPERASI-OPERASI
QUEUE :
·
Create(),
untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head dan Tail
= -1.
·
IsEmpty(),
untuk memeriksa apakah antrian sudah penuh atau belum dengan cara memeriksa
nilai Tail, jika Tail = -1 maka empty kita tidak memeriksa Head, karena Head
adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak
akan berubah-ubah pergerakan pada antrian terjadi dengan penambahan elemen antrian
ke belakang, yaitu menggunakan nilai Tail.
·
IsFull,
untuk mengecek apakah antrian sudah penuh atau belum dengan cara mengecek nilai
Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada
C) berarti sudah penuh.
·
Enqueue,
untuk menambahkan elemen ke dalam antrian, penambahan elemen selalu ditambahkan
di elemen paling belakang penambahan elemen selalu menggerakan variabel Tail
dengan cara increment counter Tail terlebih dahulu.
·
Dequeue(),
digunakan untuk menghapus elemen terdepan/pertama (head) dari antrian dengan
cara menggeser semua elemen antrian ke depan dan mengurangi Tail dengan 1 penggeseran
dilakukan dengan menggunakan looping.
·
Clear(),
untuk menghapus elemen-elemen antrian dengan cara membuat Tail dan Head = -1. Penghapusan
elemen-elemen antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset
indeks pengaksesannya ke nilai -1 sehingga elemen-elemen antrian tidak lagi
terbaca.
·
Tampil(),
untuk menampilkan nilai-nilai elemen antrian menggunakan looping dari Head
sampai dengan Tail.
4)
List dan Multi-List (Daftar)
List linear adalah sekumpulan elemen
bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya
terdiri dari 2 bagian. Sebuah list linear dikenali dengan :
·
Elemen pertamanya, biasanya melalui alamat
elemen pertama yang disebut (first).
·
Alamat elemen berikutnya (suksesor), jika kita
mengetahui alamat sebuah elemen, yang dapat diakses melalui field next.
· Setiap elemen mempunyai alamat, yaitu tempat
elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus
terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat
diakses.
·
Elemen terakhirnya.
b. Non-Linear
1)
Binary
Tree (Pohon Biner)
Sebuah pohon biner (binary
tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari
sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang
disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left)
dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner
merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam
berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa
setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak
punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon
secara umum.
2)
Graph
Graph merupakan
struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian
keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan
pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan
pendefinisian keterhubungan tak terbatas antara entitas data. Banyak
entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki
keterhubungan langsung (adjacency) secara tak terbatas demikian.
Contoh:
informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini
kota X bisa berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk
memeriksa keterhubungan dan jarak tidak langsung antara dua kota dapat
diperoleh berdasarkan data keterhubungan-keterhubungan langsung dari kota-kota
lainnya yang memperantarainya. Representasi data dengan struktur data linear
ataupun hirarkis pada masalah ini masih bisa digunakan namun akan membutuhkan
pencarian-pencarian yang kurang efisien. Struktur data graph secara
eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straightforward)
dilakukan pada strukturnya sendiri.
REFERENSI
:
Wantoro, Jan dan
Sukirman. 2017. ALGORITMA & STRUKTUR DATA
DALAM BAHASA C/C++. Surakarta: Muhammadiyah University Press.
Arizal, Anton. 2015. Pengertian Struktur Data dan Jenis-jenisnya.
From http://antonarizal.blogspot.co.id/2015/01/pengertian-struktur-data-dan-jenis.html.
11 Januari 2015.
Ridahani. S,
Lutfiana. 2017. PENGERTIAN DAN
JENIS-JENIS STRUKTUR DATA. From http://lutfianaridahani. blogspot.co.id/2017/02/normal- 0-false-false-false-en-us-x- none.html.
Februari 2017.
Andilau. 2014. Pengertian dan penjelasan Struktur Data,
Stack, Queue, Sorting (Bubble Sort & Selection Sort). From http://bekokmarley.blogspot.co.id/2014/01/pengertian-dan-penjelasan-struktur-data.html.
8 Januari 2014.
Sahabat. 2009. Erika Struktur Data. From https://www.nusinau.com/erika-struktur-data.
4 Juni 2009.
Saddam, Andryan. 2016. Struktur Data Primitif Pada C++. From http://logical-mins.blogspot.co.id/2016/07/struktur-data-cpp.html. 29 Juli
2016.