Struktur Data
struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.
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 berarti 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.
1.
Larik (Array)
Larik
(Bahasa Inggris: array),
dalam ilmu komputer, adalah suatu tipe data terstruktur yang dapat
menyimpan banyak data dengan suatu nama yang sama dan menempati
tempat di memori yang berurutan (kontinu) serta bertipe data sama
pula.
Larik
dapat diakses berdasarkan indeksnya. Indeks larik umumnya dimulai
dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan
larik biasanya dibuat dengan menggunakan perulangan (looping).
-
Larik Satu Dimensi
Larik
satu dimensi merupakan jenis larik dasar dan jenis larik yang paling
sering digunakan, pemakaian larik satu dimensi terutama dipakai dalam
tipe data string (terutama dalam bahasa Bahasa pemrograman C).
-
Larik Dua Dimensi
Larik
dua dimensi merupakan tipe larik yang lain. Larik dua dimensi sering
dipakai untuk merepresentasikan tabel dan matriks dalam pemrograman.
2.
Stack (Tumpukan)
Dalam
ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek
yang menggunakan prinsip LIFO
(Last In First Out),
yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari
stack tersebut. Stack dapat diimplementasikan sebagai representasi
berkait atau kontigu (dengan tabel fix). Ciri Stack :
*
Elemen TOP (puncak) diketahui
* penisipan dan penghapusan elemen
selalu dilakukan di TOP
* LIFO
Pemanfaatan
Stack :
*
Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking
(runut balik)
* algoritma rekursif
Operasi
Stack yang biasanya :
a.
Push (input E : typeelmt, input/output data : stack): menambahkan
sebuah elemen ke stack
b. Pop (input/output data : stack, output
E : typeelmt ) : menghapus sebuah elemen stack
c. IsEmpty ()
d.
IsFull ()
e. dan beberapas selektor yang lain
3.
Pohon (Tree)
Dalam
ilmu komputer, sebuahPohon adalah suatu struktur data yang digunakan
secara luas yang menyerupai struktur pohon dengan sejumlah simpul
yang terhubung.
-
Simpul (node)
Sebuah
Simpul dapat mengandung sebuah nilai atau suatu kondisi atau
menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon
itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih
simpul anak (child
nodes),
yang berada dibawahnya dalam pohon (menurut perjanjian, pohon
berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah
simpul yang memiliki anak dinamakan simpul ayah (parent
node)
atau simpul leluhur (ancestor
node)
atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi
dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul
tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari
sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.
-
Akar (Root nodes)
Simpul
yang paling atas dalam pohon adalah akar (root
node).
Menjadi simpul teratas, simpul akar tidak akan memiliki orang tua.
Ini merupakan simpul di mana biasanya merupakan tempat untuk memulai
operasi dalam pohon (walaupun beberapa algoritma dimulai dengan daun
dan berakhir pada akar). Semua simpul yang lain dapat dicapai dari
akar dengan menelusuri pinggiran atau pranala. (Dalam definisi resmi,
setiap jalan adalah khas). Dalam diagram, ini secara khusus di gambar
paling atas. Di beberapa pohon, seperti heap, akar memiliki sifat
khusus. Setiap simpul dalam sebuah pohon dapat dilihat sebagai akar
dari sub pohon yang berakar pada simpul tersebut.
-
Daun (Leaf nodes)
Semua
simpul yang berada pada tingkat terendah dari pohon dinamakan daun
(leaf
node).
Sejak mereka terletak pada tingkat paling bawah, mereka tidak
memiliki anak satupun. Seringkali, daun merupakan simpul terjauh dari
akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan
tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu
sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki
setidaknya satu daun. Dalam pohon berdasarkan genetic programming
sebuah daun (juga dibilang terminal) adalah bagian terluar dari
sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul
dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP
input ke programnya.
-
Simpul dalam (Internal nodes)
Sebuah
simpul dalam adalah semua simpul dari pohon yang memiliki anak dan
bukan merupakan daun. Beberapa pohon hanya menyimpan data didalam
simpul dalam, meskipun ini mempengaruhi dinamika penyimpanan data
dalam pohon. Sebegai contoh, dengan daun yang kosong, seseorang dapat
menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga
dengan daun yang dapat menyimpan data, tidak dimungkinkan untuk
menyimpan pohon kosong kecuali jika seseorang memberikan beberapa
jenis penanda data di daun yang menandakan bahwa daun tersebut
seharusnya kosong (dengan demikian pohon itu seharusnya kosong juga).
Sebaliknya, beberapa pohon hanya menyimpan data dalam daun, dan
menggunakan simpul dalam untuk menampung metadata yang lain, seperti
jarak nilai dalam sub pohon yang berakar pada simpul tersebut. Jenis
pohon ini berguna untuk jarak yang meragukan.
-
Sub pohon (Subtrees)
Sebuah
sub pohon adalah suatu bagian dari pohon struktur data yang dapat
dilihat sebagai sebuah pohon lain yang berdiri sendiri. Simpul apapun
dalam pohon P, bersama dengan seluruh simpul dibawahnya, membentuk
sebuah sub pohon dari P. Sub pohon yang terhubung dengan akar
merupakan keseluruhan pohon tersebut. Sub pohon yang terhubung dengan
simpul lain manapun dinamakan sub pohon asli (proper
subtree).
-
Penyusunan pohon
Terdapat
dua jenis pohon. Sebuah pohon tidak terurut (unordered tree) adalah
sebuah pohon dalam arti struktural semata-mata, yang dapat dikatakan
memberikan sebuah simpul yang tidak memiliki susunan untuk anak dari
simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan,
sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak
dari simpul tersebut, dinamakan sebuah pohon terurut (ordered tree),
dan struktur data yang dibangun didalamnya dinamakan pohon terurut
struktur data (ordered
tree data structures).
Sejauh ini pohon terurut merupakan bentuk umum dari pohon struktur
data. Pohon biner terurut merupakan suatu jenis dari pohon terurut.
-
Hutan
Sebuah
hutan adalah sebuah himpunan yang terdiri dari pohon terurut.
Lintasan inorder, preorder, dan postorder didefinisikan secara
rekursif untuk hutan.
–
inorder
1.
lewati inorder hutan yang dibentuk oleh sub pohon yang pertama dalam
hutan, jika ada
2. kunjungi akar dari pohon pertama.
3.
lewati inorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika
ada.
–
preorder
1.
kunjungi akar dari pohon pertama.
2. lewati preorder hutan yang
dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
3.
lewati preorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika
ada.
–
postorder
1.
lewati postorder hutan yang dibentuk oleh sub pohon yang pertama
dalam hutan, jika ada
2. lewati postorder hutan yang dibentuk
oleh sisa pohon dalam hutan, jika ada.
3. kunjungi akar dari
pohon pertama.
-
Penggambaran pohon
Ada
banyak cara untuk menggambarkan pohon; pada umumnya penggambaran
mewakili simpul sebagai rekor yang dialokasikan pada heap (bedakan
dengan heap struktur data) yang mengacu pada anaknya, ayahnya, atau
keduanya, atau seperti data materi dalam array, dengan hubungan
diantaranya ditentukan oleh posisi mereka dalam array (contoh binary
heap).
-
Pohon sebagai grafik
Dalam
teori grafik, sebuah pohon adalah sebuah grafik asiklis yang
terhubung. Pohon yang berakar merupakan sebuah grafik dengan sudut
tunggal diluar sebagai akar. Dalam kasus ini, dua sudut apapun yang
terhubung dengan sebuah sisi mewarisi hubungan orang tua dan anak.
Sebuah grafik asiklis dengan bermacam-macam komponen yang terhubung
atau himpunan dari pohon-pohon yang berakar kadang-kadang dipanggil
hutan.
-
Metode traversal
Melangkah
melalui materi dari pohon, dengan arti dari hubungan antara orang tua
dan anak, dinamakan menelusuri pohon, dan tindakannya adalah sebuah
jalan dari pohon. Seringkali, sebuah operasi mungkin dapat dilakukan
sebagai penunjuk ysng mengacu pada simpul khusus. Sebuah penelusuran
dimana setiap simpul ayah dikunjungi sebelum anaknya
dinamakan pre-order
walk,
yaitu sebuah penelusuran dimana anaknya dikunjungi sebelum ayahnya
masing-masing dinamakan post-order walk.
-
Operasi umum
*
Menghitung seluruh materi (item)
* Pencarian untuk sebuah
materi
* Menambahkan sebuah materi pada sebuah posisi tertentu
dalam pohon
* Menghapus sebuah materi
* Mengeluarkan
seluruh bagian dari sebuah pohon pruning
* Menambahkan seluruh
bagian ke sebuah pohon grafting
* Menemukan akar untuk simpul
apapun
-
Penggunaan umum
*
Memanipulasi data secara hierarki
* Membuat informasi mudah
untuk dicari
* Memanipulasi data sorted lists

Komentar
Posting Komentar