Anda di halaman 1dari 29

STRUKTUR DATA

KELOMPOK 12
PARBINOTO WILLIAM C.441.18.0012
MAHAZTRA PRADILA VIRGINANDA C.441.17.0014
YOSAFAT RIZKI PRASOJO C.441.17.0016
PENGERTIAN STRUKTUR DATA

• Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan,
penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data
tersebut dapat digunakan secara efisien.Sedangkan Data adalah representasi dari fakta
dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau
direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
PEMBUATAN STRUKTUR DATA

• Pembuatan struktur data adalah pembentukan tipe data lengkap yang mempunyai empat
property berikut :
• Nama : Identifier tipe data
• Domain : Domain / himpunan semesta nilai di tipe data
• Konstanta (penyebutan anggota-anggotanya) : Cara penyebutan anggota-anggota tipe data
• Operasi-operasi terhadap tipe data itu (operator) : Daftar operasi terhadap anggota tipe data
sehingga kelakuan objek data sesuai spesifikasi.
JENIS STRUKTUR DATA

• Dalam perkembangannya ada beberapa jenis-jenis struktur data yang perlu kita ketahui.
Lalu apa saja sih jenis-jenis struktur data yang harus kita pahami itu. Berikut beberapa
jenis-jenis struktur data.
• A. SEDERHANA
• 1. Array
• 2. Reccord
JENIS STRUKTUR DATA

• B. MAJEMUK • B.2 MAJEMUK NON LINEAR


• B.1 MAJEMUK LINEAR 1. Binary-Tree (Pohon Biner)
1. STACK 2. GRAFIK
2. QUEUE
3. LIST DAN MULTI LIST
MAJEMUK

Pada perkembangan selanjutnya, struktur data dibuat semakin kompleks. Dari struktur data
yang sederhana kini mejadi struktur data majemuk. Pada struktur data majemuk ada yang
linear dan non-linear.
MAJEMUK LINIER

• Stack
Stack adalah struktur data linear dimana penambahan atau pengurangan komponen
dilakukan di satu ujung saja. Stack merupakan suatu bentuk khusus dari linear list di mana
operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada
satu sisi saja yang disebut sebagai “TOP”. Stack juga merupakan struktur data yang seolah
olah data ditempatkan di atas data yang lain.
Diibaratkan seperti menumpuk piring, maka data yang baru datang akan ditempatkan di atas
data yang sebelumnya.
OPERASI DASAR YANG DIDEFINISIKAN PADA STACK

1. Push : Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack. Notasi yang digunakan
adalah : PUSH(E,S) Artinya : menambahkan elemen E ke dalam stack S. Elemen yang baru masuk ini
akan menempati posisi TOP. Jadi : TOP(PUSH(E,S)) = E. Akibat dari operasi ini jumlah elemen dalam
stack akan bertambah, artinya NOEL(S) menjadi lebih besar atau stack menjadi tidak kosong
(ISEMPTY(PUSH(E,S)) = false).
2. Pop : Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack. Notasinya : POP(S)
Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP. Akibat dari operasi ini
jumlah elemen stack akan berkurang atau NOEL(S) berkurang dan elemen pada posisi TOP akan
berubah. Operator POP ini tidak dapat digunakan pada stack kosong, artinya : POP(CREATE(S)) =
error condition.
QUEUE

Queue adalah daftar linier yang dikenali sebagai elemen pertama (head) dan
elemen terakhir (tail). Penghapusan elemen didefinisikan sebagai penyisipan setelah elemen
terakhir. Penghapusan selalu dilakukan pada elemen pertama dengan satu elemen dapat
diakses melalui informasi “next”.
Prinsip yang digunakan pada linear queue adalah FIFO (First In First Out) atau FIFS
(First In First Serve). Maksudnya adalah data atau elemen yang pertama masuk akan menjadi
elemen yang pertama keluar.
Proses
a. AWAL (Inisialisasi)
b. INSERT (Isi, Sisip, Masuk, Simpan, Tulis)
c. DELETE ( Hapus, Keluar, Ambil atau Dilayani, Baca)
d. RESET (Kembali ke keadaan awal)
Algoritma dasar untuk proses awal (inisialisasi) dalam bahasa C :
Ilustrasi hasil proses awal :
F > R atau F = R + 1 berarti Antrian KOSONG
Pada keadaan kosong seperti ilustrasi di atas maka proses yang dapat dilakukan hanya INSERT
saja.
Dalam struktur LINEAR QUEUE, digunakan istilah :
• INSERT untuk : Simpan, atau Masuk, atau Isi atau Tulis.
• DELETE untuk : Ambil, atau Keluar, atau Baca, atau Hapus
LIST DAN MULTI LIST

Daftar dan Multi Daftar adalah sekumpulan daftar linier dengan elemen-elemen dengan
tipe yang sama. Daftar ini memiliki urutan tertentu, yang masing-masing elemen terdiri dari 2
bagian.
List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan
tertentu, yang setiap elemennya terdiri dari 2 bagian. sebuah list linier dikenali dengan (1)
elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first); (2) Alamat
elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses
melalui field next; (3) 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; (4) Elemen terakhirnya.
MAJEMUK NON-LINEAR

Pada struktur data majemuk non-linear dibagi mejadi dua. Berikut 2 pembagian strutur
data majemuk non-linear.
BINARY-TREE (POHON BINER)
Binary-Tree adalah himpunan terbatas yang mungkin kosong atau terdiri dari simpul yang
disebut root. Pohon biner terdiri dua himpunan terpisah yang merupakan pohon biner
yang disebut sebagai sub-pohon kiri dan sub-pohon kanan pohon biner yang merupakan .
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan
yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa
didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut
Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan
satu sama lainnya (disebut subtree).
iuraikan istilah-istilah umum dalam tree :
1. Prodecessor : node yang berada diatas node tertentu.
2. Successor : node yang berada di bawah node tertentu.
3. Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
4. Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
5. Parent : predecssor satu level di atas suatu node.
6. Child : successor satu level di bawah suatu node.
7. Sibling : node-node yang memiliki parent yang sama dengan suatu node.
8. Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik
dari tree tersebut.
9. Size : banyaknya node dalam suatu tree.
10. Height : banyaknya tingkatan/level dalam suatu tree.
11. Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
12. Leaf : node-node dalam tree yang tak memiliki seccessor.
13. Degree : banyaknya child yang dimiliki suatu node
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua
subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh
memiliki paling banyak dua child.
Operasi-operasi pada Binary Tree :
1. Create : Membentuk binary tree baru yang masih kosong.
2. Clear : Mengosongkan binary tree yang sudah ada.
3. Empty : Function untuk memeriksa apakah binary tree masih kosong.
4. Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai root, left child, atau right child. Khusus insert
sebagai root, tree harus dalam keadaan kosong.
5. Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree tak boleh kosong)
6. Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak boleh kosong)
7. Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh kosong)
8. DeleteSub : Menghapus sebuah subtree (node beserta seluruh descendantnya) yang ditunjuk current. Tree tak boleh kosong.
Setelah itu pointer current akan berpindah ke parent dari node yang dihapus.
9. Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height, serta average lengthnya. Tree tidak boleh kosong.
(Average Length = [jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
10. Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali. Hasilnya adalah urutan informasi secara linier yang
tersimpan dalam tree. Ada tiga cara traverse : Pre Order, In Order, dan Post Order.
Langkah-Langkahnya Traverse :
•PreOrder : Cetak isi node yang dikunjungi, kunjungi Left Child, kunjungi Right Child.
•InOrder : Kunjungi Left Child, Cetak isi node yang dikunjungi, kunjungi Right Child.
•PostOrder : Kunjungi Left Child, Kunjungi Right Child, cetak isi node yang dikunjungi
BINARY SEARCH TREES (POHON CARI BINER)
Pohon cari biner adalah pohon biner yang dirancang untuk menskemakan urutan data yang akan
dimasukkan ke dalam memori agar proses pencarian, penghapusan dan penambahan data dapat berjalan
secara efisien dibanding dengan pemasukan data secara array maupun link.
Sifat dari skema pohon cari biner adalah : (1) setiap elemen yang berada di left substrees selalu lebih kecil
dari elemen yang ada di right substrees, (2) setiap elemen yang berada di right substrees selalu lebih besar
atau sama dengan elemen yang berada di left substrees.
Contoh : diketahui sekumpulan elemen sebagai berikut :
60, 75, 25, 50, 15, 66, 33, 44
Pembentukan awal skema pohon binernya berturut-turut sebagai berikut :

Pembentukan awal pohon cari biner


dan, hasil akhirnya sebagai berikut

Pohon Cari Biner


GRAFIK

Graf adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan
sekumpulan garis (sisi). Graph dapat digunakan untuk merepresentasikan objek-objek diskrit dan hubungan
antara objek-objek tersebut. Representasi visual darigraph adalah dengan menyatakan objek sebagai noktah,
bulatan atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis (Edge).
Struktur data grafik adalah yang paling umum. Jika struktur linear memungkinkan kita untuk
mendefinisikan keterhubungan yang berurutan antara entitas data. Maka pada struktur pohon data
memungkinkan kita untuk mendefinisikan keterkaitan data secara hierarkis. Maka pada struktur grafik
memungkinkan mendefinisikan koneksi tak terbatas antara entitas data.
Ada beberapa cara untuk menyimpan graph di dalam sitem komputer. Struktur data bergantung pada
struktur graph dan algoritma yang digunakan untuk memmanipulasi graph. Secara teori salah satu dari keduanya
dapat dibedakan antara struktur list dan matriks, tetapi dalam penggunaannya struktur terbaik yang sering
digunakan adalah kombinasi keduanya.
•Graph tak berarah (undirected graph atau non-directed graph) :
•Urutan simpul dalam sebuah busur tidak dipentingkan. Misal busur e1 dapat disebut busur AB atau BA
•Graph berarah (directed graph) :
•Urutan simpul mempunyai arti. Misal busur AB adalah e1 sedangkan busur BA adalah e8.
•Graph Berbobot (Weighted Graph)
•Jika setiap busur mempunyai nilai yang menyatakan hubungan antara 2 buah simpul, maka busur tersebut
dinyatakan memiliki bobot.
•Bobot sebuah busur dapat menyatakan panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan
perhari yang melalui sebuah jalan, dll.
REPRESENTASI GRAF

Dalam pemrograman, agar data yang ada dalam graph dapat diolah, maka graph harus
dinyatakan dalam suatu struktur data yang dapat mewakili graph tersebut. Dalam hal ini
graph perlu direpresentasikan kedalam bentuk array dan dimensi yang sering disebut
matrix atau direpresentasikan dalam bentuk linked list. Bentuk mana yang dipilih biasanya
tergantung kepada efisiensi dan kemudahan dalam membuat program. Berikut ini
beberapa bentuk representasi graph:
REPRESENTASI GRAPH DALAM BENTUK MATRIX:

• Adjacency Matrik Graf Tak Berarah


• Matrik yang digambarkan pada gambar 1b merupakan representasi dalam bentuk Adjacency Matrik dari
graf yang digambarkan pada gambar 1a. Beberapa hal yang dapat dilihat atau dapat diterangkan pada
Adjacency Matrik tersebut adalah sebagai berikut :
• Matrik yang terbentuk adalah matrik bujur sangkar n x n, dimana n = jumlah simpul yang ada dalam graf
tersebut. Matrik ini menyatakan hubungan antara simpul satu dengan simpul lainnya.
• Matrik yang terbentuk adalah matrik simetris dengan sumbu simetris adalah diagonal dari titik kiri atas ke
titik kanan bawah.
• Data yang tedapat baik dalam baris maupun kolom, dapat menyatakan degree sebuah simpul. Contoh :
baik pada baris D maupun kolom D jumlah angka 1 nya adalah 3 buah, dimana jumlah ini menyatakan
degree simpul D.
Matrik yang digambarkan pada gambar 2b merupakan representasi dalam bentuk Adjacency Matrik dari
graf yang digambarkan pada gambar 2a. Beberapa hal yang dapat dilihat atau dapat diterangkan pada
Adjacency Matrik tersebut adalah sebagai berikut :
•Matrik yang terbentuk adalah matrik bujur sangkar n x n, dimana n = jumlah simpul yang ada dalam graf
tersebut. Matrik ini menyatakan hubungan antara simpul satu dengan simpul lainnya.
•Matrik yang terbentuk mungkin simetris mungkin juga tidak simetris. Menjadi simetris bila hubungan
antara dua buah simpul (v1 dan v2) terdapat busur dari V1 ke V2 dan juga sebaliknya.
•Hal pokok yang dinyatakan oleh matrik ini adalah : busur yang ’keluar’ dari suatu simpul. Dengan
demikian, data yang terdapat dalam suatu baris, dapat menyatakan outdegree simpul yang bersangkutan.
Contoh : Jumlah elemen yang nilainya = 1 pada baris B ada 3 elemen,ini menyatakan jumlah outdegree
simpul B adalah 3 buah.
•Data yang terdapat dalam suatu kolom, dapat menyatakan indegree simpul bersangkutan.
Contoh : Jumlah elemen yang nilainya 1 pada kolom B ada 2 elemen, ini menyatakan indegree simpul B
adalah 2 buah.
ADJACENCY MATRIK GRAF BERBOBOT TAK
BERARAH
• Nilai yang ada dalam tiap elemen matrik, menyatakan bobot busur yang menghubungkan
dua buah simpul yang bersangkutan. Untuk dua buah simpul yang tidak berhubungan
langsung oleh sebuah busur, maka dianggap dihubungkan oleh sebuah busur yang nilai
bobotnya tidak terhingga. Dalam pemograman, karena keperluan algoritma, maka dari
total bobot seluruh busur yang ada atau yang mungkin ada.
• Contoh: pada gambar 3a simpul A dan C tidak berhubungan langsung melalui sebuah
busur, maka untuk elemen matrik yang bersangkutan diisi dengan nilai 999karena nilai 999
dalam kasus ini cukup mewakili nilai tidak terhingga.
SEKIAN DAN TERIMAKASIH

Anda mungkin juga menyukai