Anda di halaman 1dari 14

MAKALAH

STRUKTUR DATA

DOSEN PEMBIMBING
Mar’atus Nur Sholehah S.sy,M.M

DISUSUN OLEH
Intan Tri Lestari
NPM : 2055202019

UNIVERSITAS NAHDLATUL ULAMA LAMPUNG


FAKULTAS SAINS DAN TEKNOLOGI
TEKNIK INFORMATIKA
2021/2022

1
KATA PENGANTAR

Puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya
sehingga saya dapat menyelesaikan tugas makalah yang berjudul struktur data ini
tepat pada waktunya.
Adapun tujuan dari penulisan dari makalah ini adalah untuk memenuhi tugas dosen
pada mata kuliah struktur data. Selain itu, makalah ini juga bertujuan untuk
menambah wawasan tentang pemograman bagi para pembaca dan juga bagi penulis.
Saya menyadari, makalah yang saya tulis ini masih jauh dari kata sempurna. Oleh
karena itu, kritik dan saran yang membangun akan saya nantikan demi kesempurnaan
makalah ini.

Banjar Agung, 28 September 2021

INTAN TRI LESTARI


NIM : 2055202019

2
DAFTAR ISI
HALAMAN JUDUL.......................................................................................................1
KATA PENGANTAR ....................................................................................................2
DAFTAR ISI ...................................................................................................................3
BAB I PENDAHULUAN ...............................................................................................4
1.1. Latar Belakang .................................................................................................4
1.2 Rumusan Masalah.............................................................................................. 4
1.3 Tujuan Penulisan ..............................................................................................4
BAB II PEMBAHASAN................................................................................................. 5
A. Struktur Data ......................................................................................................5
B. Pointer.................................................................................................................7
C. Array ..................................................................................................................8
D. Linked List .........................................................................................................9
E. Stack ...................................................................................................................9
F. Queue...................................................................................................................10
G. Tree..................................................................................................................... 10
BAB III PENUTUP ........................................................................................................13
A. Kesimpulan ........................................................................................................13
B. Saran ..................................................................................................................13
DAFTAR PUSTAKA...................................................................................................... 14

3
BAB I PENDAHULUAN

1.1 Latar Belakang

Pemograman dalam struktur data ada beberapa macam. Salah satunya adalah pemograman C++.
Dalam pemograman ini biasanya menggunakan berbagai variable misalnya Struktur data, pointer,
Array, Linked List, stack, queue, tree, pohon biner (binari tree) dan graph / matrik penjajian data.

Makalah ini akan membahas variabel tersebut dimana variable mempunyai ciri dan umum yang
berbeda sesuai dengan tipe file yang di gunakan pembaca. Pemograman ini merupakan pemograman
yang berbeda dari pemograman lainnya misalnya VB, Delphi atau Pascal namun perbedaan juga
tidak begitu signifikan pada pemograman pascal.

1.2 Rumusan Masalah

Makalah ini akan membahas tentang :


1. Konsep dasar struktur data
2. Pointer
3. Array (1 dimensi, 2 dimensi dan multi/banyak)
4. Linked List,
5. Stack
6. Queue
7. Tree

1.3 tujuan makalah

a. mendeskripsikan konsep struktur data


b. mendeskripsikan yang di maksud dengan pointer
c. mendeskripsikan yang di maksud dengan array
d. mendeskripsikan yang dimaksud dengan linked list
e. mendeskripsikan yang di maksud dengan stack
f. mendeskripsikan yang dimaksud dengan queue
g. mendeskripsikan yang di maksud dengan tree

4
BAB II
PEMBAHASAN
A. struktur data
a). Pengertian Data
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. Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam bentuk
konstanta / variable. Konstanta digunakan untuk menyatakan nilai tetap sedangkan variable
digunakan dalam program untuk menyatakan nilai yang dapat berubah-ubah selang eksekusi
berlangsung.
Ada empat istilah data, yaitu:
1. Tipe data adalah jenis atau macam data di dalam suatu variable dalam bahasa
pemrograman.
2. Objek data mengacu kumpulan elemen, D (domain).
3. Representasi data : Suatu mapping dari struktur data ‘d’ ke suatu set ke struktur data ‘e’
(d===e) misal bolean di representasikan dalam 0 dan 1.
4. Struktur data biasa dipakai untuk mengelompokan beberapa informasi yang terkait
menjadi sebuah kesatuan.

Tipe data sederhana terbagi menjadi dua, yaitu:


1. Data sederhana tunggal. Misalnya : Integer, real / float, Boolean dan character.
2. Data sederhana majemuk. Misalnya : String.

b). Pengertian Struktur Data


Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer agar
bisa dipakai secara efisien. Struktur data menyangkut susunan fisik data dalam komputer
dan berfungsi agar:
1. Penyimpanan lebih efesien
2. Agar tersusun lebih terurut
3. Agar data retrieval lebih efektif
Struktur data diperlukan dalam perencanaan Algoritma dan penyusunan program sebagai
dasar teknik dari Database. Pemakaian struktur data yang tepat didalam proses
pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan
program secara keseluruhan lebih efesien dan sederhana.

Secara garis besar type data dapat dikategorikan menjadi :


1. Type data sederhana
2. Type data sederhana tunggal (Integer, real, boolean dan karakter)
3. Type data sederhana majemuk (String)
4. Struktur data
5. Struktur data sederhana (array dan record)
6. Struktur data majemuk
7. Graph ( Graf )

5
c). Konstanta & Variabel
Jika dalam membuat suatu program, tentu akan sering menggunakan bilangan numerik atau
suatu kalimat string yang sama yang akan digunakan berkali-kali, ada baiknya bilangan atau
kalimat tersebut dijadikan sebagai suatu konstanta.
Manfaat Konstanta:
Penggunaan konstanta akan membuat program menjadi lebih mudah dimengerti dan
diperbaiki. Penggunaan konstanta akan dapat memberikan nama yang mudah dipahami
untuk suatu bilangan numerik yang kompleks. Contoh: phi = 3.141592.
Variabel adalah sebuah identifier yang nilainya dapat diubah sesuai dengan kebutuha
program. Jika dibutuhkan sebuah variabel yang dapat dikenali oleh semua lingkungan
dalam program maka harus digunakan variabel Global. Pada C++ selalu terdapat fungsi
utama, variabel global biasanya dideklarasikan di luar fungsi utama tersebut. Juga terdapat
variabel Lokal. Variabel lokal hanya dikenali oleh suatu fungsi saja, artinya variabel lokal
tidak dikenal oleh lingkungan luar di dalam program yang dibuat. Variabel lokal harus
berada dalam lingkup fungsi tertentu.

6
B. Pointer
Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer
tertentu. Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk
nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang
didukung oleh bahasa C. Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada
pointer sifatnya dinamis dan dapat lebih fleksibel. Variabel pointer yang tidak menunjuk
pada nilai apapun berarti memiliki nilai NULL, dan disebut sebagai dangling pointer karena
nilainya tidak diinisialisasi dan tidak dapat diprediksi.
Contoh umum dari pointer adalah start pointer, end pointer, dan stack pointer. Pointer dapat
menjadi absolute (alamat fisik yang sebenarnya atau alamat virtual di memori virtual) atau
relative (sebuah offset dari alamat awal absolute ("dasar") yang biasanya menggunakan bit
yang lebih sedikit dari pada alamat lengkap, tetapi biasanya juga akan membutuhkan satu
tambahan operasi aritmatika untuk menyelesaikannya). Dua byte offset, berisi 16-bit
unsigned integer, dapat digunakan untuk menyediakan pengalamatan relative sampai
dengan 64 kilobyte struktur data. Pointer digunakan dalam mengontrol tabel. Kontrol tabel
yang digunakan untuk mengontrol aliran program (program flow), biasanya membuat
ekstensif menggunakan pointer. Pointer biasanya tertanam dalam sebuah entry tabel.
Misalnya, digunakan untuk menyimpan entry point bagi subrutin yang akan dijalankan, dan
berdasarkan kondisi tertentu yang didefinisikan dalam entri tabel yang sama.
Namun pointer hanya dapat berupa indeks untuk memisahkan data yang lain tetapi terikat,
tabel terdiri dari suatu array dari alamat yang aktual atau alamat sendiri (tergantung pada
konstruksi bahasa pemrograman yang tersedia).
Pointer juga dapat digunakan untuk titik (kembali) ke entri tabel sebelumnya (seperti dalam
pengolahan loop) atau maju melewatibeberapa entri tabel (seperti pada switch atau "awal"
keluar dari loop).
Pointer juga dapat digunakan untuk mengalokasikan atau DEALLOCATE variabel dinamis
dan array dalam memori. Karena variable akan sering menjadikan memori penuh setelah
selasai ngerjakan sebuah perintah, itu bisa menjadi pemborosan memori bila kita
menyimpannya, dan oleh karena itu praktik yang baik untuk DEALLOCATE itu
(menggunakan referensi pointer asli) ketika tidak lagi diperlukan. Kegagalan untuk
melakukannya dapat mengakibatkan kehabisan memori (di mana memori bebas yang
tersedia akan secara bertahap berkurang atau dalam kasus yang parah dengan secara cepat
akan penuh).
Menurut Frieyadie. 2007. Edisi Revisi Buku Pemrograman C++ dengan Borland C++ 5.02.
Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk
menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui
dengan mudah.

7
C. Array
Array adalah suatu variabel yang terdiri dari sekumpulan data dimana data-data tersebut
mempunyai tipe data yang sama. Setiap data disimpan dalam alamat memori yang berbeda-
beda dan disebut dengan elemen array.Setiap elemen mempunyai nilai indek sesuai dengan
urutannya. Melalui indek inilah kita dapat mengakses data-data tersebut. Tempat
menyimpanya sekumpulan data yang memilki tipe data yang sama dan mempunyai 2
indek(baris dan kolom). Array dideklarasikan dengan tanda [ ] (bracket), baik dalam bahasa
C++ .
Bentuk umum dari tipe data array adalah :
tipe_data nama_array[jumlah_elemen] Jika ingin mendeklarasikan sebuah array dengan tipe
data integer dengan nama a dan jumlah elemen array-nya 10 maka.
kodenya adalah : int a[10];
Dalam bahasa Java pendeklarasian array lebih variarif.
Ada beberapa jenis array yang biasa di gunakan pada program,seperti array satu dimensi,
dan dua dimensi.
a. Array Satu Dimensi
Tempat menyimpanya sekumpulan data yang memiliki tipe data yang sama dan hanya ada
satu indek saja.
b. Array Dua Dimensi
Array dua dimensi ini biasa digunakan untuk membuat program yang mempunyai aturan
baris dan kolom,seperti membuat matrik,untuk pendataan.
Array adalah deretan variable yang menyiapkan tempat. Pada alamat terkecil adalah tempat
elemen pertama dan alamat terakhir adalah tempat elemen terakhir yang sering disebut
dengan index.

8
D. Linked List
Linked List adalah Struktur Data yang terdiri dari suatu node dan referensi/pointer yang
menghubungkan satu node dengan yang lain. Dimana Node terakhir memiliki referensi ke
null. Setiap node memiliki data dan referensi ke node selanjutnya (singly) dan atau ke node
sebelumnya (doubly). Digunakan sebagai dasar implementasi Stacks dan Queue. Tidak ada
unsur Random Access via indeks seperti Array dan setiap operasi biasanya perlu operasi
sekuensial dari node awal.
Enaknya Linked List bersifat dinamis secara ukuran, Alokasi penggunaan memory yang
dibutuhkan pada run-time, Mudah di implementasikan. Akan tetapi kurangnya Linked List
lebih boros memory, pembacaan node hanya bisa melalui proses sekuensial dari awal, tidak
layaknya via indeks di Array. Pada Singly Linked List, mustahil bisa melakukan traversal
dari belakang ke depan, namun dapat disolusikan dengan Doubly Linked List
Di dalam Linked List pun ada beberapa Operasi yang perlu diketahui yaitu:
1. Insert di awal
2. Insert di akhir
3. Remove sebuah nilai
4. Remove node pertama
5. Traversing forward and reverse

E. Stack
Stack merupakan sebuah kumpulan data atau item dengan cara penambahan item baru serta
penghapusan, selalu terjadi pada tempat atau ujung yang sama. Stack ini biasa di analogikan
seperti tumpukan pada piring. Dimana kita mengambil maupun meletakkan piring selalu pada
sisi atasnya. Stack ini memiliki konsep LIFO (last in first out) atau dalam bahasa
indonesianya adalah data yang terakhir masuk, maka ialah yang pertama akan dikeluarkan.
tack ini memiliki beberapa operasi, yaitu:

 push(item)menambahkan suatu item baru ke atas (top) dari stack. Perlu item dan
tidak mengembalikan apapun.
 pop()menghapus item teratas dari stack. Tidak perlu parameter dan mengembalikan
item. Stack berubah.
 peek()mengintip top item dari stack tetapi tidak menghapusnya. Tidak memerlukan
parameter dan stack tidak berubah.

9
F. Queue
Queue atau Antrian merupakan struktur data yang bisa direpresentasikan secara kontigu
maupun dengan pointer. Struktur data ini menganut prinsip FIFO (First-In-First-Out / Masuk
Pertama Keluar Pertama), sama seperti antrian pada dunia nyata. Orang yang mengantre
duluan, akan dilayani lebih cepat daripada yang mengantre belakangan. Pada Queue, karena
perubahan data selalu mengacu pada Head, maka hanya ada 1 jenis insert maupun delete.
Prosedur ini sering disebut Enqueue dan Dequeue pada kasus Queue. Untuk Enqueue, cukup
tambahkan elemen setelah elemen terakhir Queue, dan untuk Dequeue, cukup "geser"kan
Head menjadi elemen selanjutnya.
Dibandingkan struktur-struktur sebelumnya, aplikasi Queue dalam dunia nyata lebih mudah
dibayangkan. Struktur data ini cocok untuk menyimpan data seperti waiting list suatu
restoran, misalnya. Pelanggan yang sudah menunggu lebih lama akan lebih dulu
mendapatkan tempat duduk setelah tempat duduknya tersedia dibandingkan pelanggan yang
baru datang (ingat lagi FIFO). Secara low-level, banyak juga task komputer yang dijalankan
dengan Queue, misalnya CPU task scheduling. Namun, bagaimana jika kita menginginkan
sebuah Queue yang tidak selalu mendahulukan urutan saat insert? Salah satu aplikasi dari
konsep ini adalah Priority Queue, dimana elemen dengan "prioritas" yang lebih besar akan
ditempatkan lebih dekat dengan Head, dan nantinya mengakibatkan elemen tersebut di-
dequeue dengan lebih mudah. Contoh dari aplikasi ini adalah penyimpanan data antrian
Rumah Sakit. Pasien dengan penyakit yang lebih darurat akan dianggap memiliki "prioritas"
yang lebih tinggi, sehingga akan lebih cepat dilayani (dequeue dari waiting list) dibandingkan
pasien yang penyakitnya ringan.

G. Three
Tree atau pohon merupakan struktur data yang tidak linear yang digunakan untuk
mempresentasikan data yang bersifat hirarki antara elemen-elemennya. Definisi tree yaitu
kumpulan elemen yang salah satu elemennya disebut root (akar) dan elemen yang lain
disebut simpul ( node) yang terpecah menjadi sejumlah kumpulan yang tidak saling
berhubungan satu sama lain yang disebut sub-tree atau cabang.
jenis jenis tree
1) Binary Tree
pengertian binary tree dalam struktur data
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. contoh implementasi
binary tree.

Jenis-jenis binary tree :


a). Full Binary Tree
Full binary tree adalah binary tree yang tiap node-nya (kecuali leaf) memiliki dua child dan
tiap subtree harus mempunyai panjang path yang sama.
b). Complete Binary Tree
10
Complete binary t ree adalah binary tree yang mirip dengan full binary tree, namun tiap
subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.
c). Skewed Binary Tree
Skewed binary t ree adalah binary tree yang semua node nya (kecuali leaf) hanya memiliki
satu child.
d). Binary search tree (BST)
Binary search t ree (BST) adalah jenis pohon terurut yang digunakan untuk menyimpan data
sehingga memudahkan pencarian kembali data tersebut.

Operasi pada Tree


 Create
Create digunakan untuk membentuk binary tree baru yang masih kosong.
 Clear
Clear digunakan untuk mengosongkan binary tree yang sudah ada.
 Empty
Empty digunakan untuk memeriksa apakah binary tree masih kosong.
 Insert
Insert digunakan untuk memasukkan sebuah node ke dalam tree.
 Find
Find digunakan untuk mencari root, parent, left child , atau right child dari suatu node
dengan syarat tree tidak boleh kosong.
 Update
Update digunakan untuk mengubah isi dari node yang ditunjuk oleh pointer current
dengan syarat tree tidak boleh kosong.
 Retrieve
Retrieve digunakan untuk mengetahui isi dari node yang ditunjuk pointer current
dengan syarat tree tidak boleh kosong.
 Delete Sub
DeleteSub digunakan untuk menghapus sebuah sub-tree (node beserta seluruh
descendant-nya) yang ditunjuk pointer current dengan syarat tree tidak boleh kosong.
 Characteristic
Characteristic digunakan untuk mengetahui karakteristik dari suatu tree, yakni size,
height, serta average length-nya.
 Traverse
Traverse digunakan untuk mengunjungi seluruh node-node pada tree, masing-masing
sekali.

Tree Traversal
Tree traversal merupakan sebuah kunjungan yang berawal dari root, mengunjungi
setiap node dalam tree masing-masing sekali. Kunjungan atau traversing dapat
dilakukan dengan 3 cara yaitupre order, in order dan post order.

11
a. Preorder
Algoritma preorder :
1. Mencetak info pada node yang dikunjungi.
2. Mengunjungi cabang kiri.
3. Mengunjungi cabang kanan.

b. Inorder
Algoritma inorder :
1. Mengunjungi cabang kiri.
2. Mencetak info pada node yang dikunjungi.
3. Mengunjungi cabang kanan.

c. Postorder
Algoritma postorder :
1. Mengunjungi cabang kiri.
2. Mengunjungi cabang kanan.
3. Mencetak info pada node yang dikunjungi.
4. Breadth-first search (BFS) dan Depth-First-Search (DFS)
Breadth-first search (BFS)
Breadth-first search (BFS) melakukan proses searching pada semua node yang berada
pada level atau hierarki yang sama terlebih dahulu sebelum melanjutkan proses
searching pada node di level berikutnya.[
Depth-First-Search (DFS)
Depth-First-Search (DFS) adalah salah satu algoritma penelusuran struktur tree
berdasarkan kedalaman. Simpul ditelusuri dari root kemudian ke salah satu simpul
anaknya (misalnya prioritas penelusuran berdasarkan anak pertama [simpul sebelah
kiri]), maka penelusuran dilakukan terus melalui simpul anak pertama dari simpul
anak pertama level sebelumnya hingga mencapai level terdalam. Setelah sampai di
level terdalam, penelusuran akan kembali ke 1 level sebelumnya untuk menelusuri
simpul anak kedua pada pohon biner [simpul sebelah kanan] lalu kembali ke langkah
sebelumnya dengan menelusuri simpul anak pertama lagi sampai level terdalam dan
seterusnya.

BAB III

12
PENUTUP
A. KESIMPULAN
Kesimpulannya yaitu struktur data merupakan salah satu bahan dasar pembuatan
program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan
menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara
keseluruhan lebih sederhana. Array merupakan bagian dari struktur data yaitu
termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai
pemesanan alokasi memory sementara pada komputer.Apabila kita membuat program
dengan data yang sudah kita ketahui batasnyamaka kita menggunakan Array (type
data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer
(type data dinamis).

B. SARAN
Menyadari bahwa penulis masih jauh dari kata sempurna, kedepannya penulis akan
lebih fokus dan details dalam menjelaskan tentang makalah di atas dengan sumber –
sumber yang lebih banyak yang tentunga dapat di pertanggung jawabkan.
Untuk saran bisa berisi kritik atau saran terhadap penulisan juga bisa untuk
menanggapi terhadap kesimpulan dari bahasan makalah yang telah di jelaskan. Untuk
bagian terakhir dari makalah adalah daftar pustaka. Pada kesempatan lain akan saya
jelaskan tentang daftar pustaka makalah.

DAFTAR PUSTAKA
13
SAYA.2015. pointer dalam struktur data.
http://mardaut.blogspot.com/2015/11/pointer-struktur-data.html (diakses tanggal 28
september 2021)
unknown.2015. struktur data.
http://irpannurdiansah.blogspot.com/p/array.html (diakses tanggal 28 september 2021)
prasetio,fahmi.2018. struktur data.
https://medium.com/@fahmiprasetiiio/struktur-data-2de34750df89 (diakses tanggal 28
september 2021)
vincentiussgk.2021. mengenal struktur data - 5 queue
https://kotakode.com/blogs/4468/Mengenal-Struktur-Data---5%3A-Queue (diakses tanggal
28 september 2021)
nurrahman,saban.2018 pengertian tree pada struktur data
http://bocahngoding.blogspot.com/2018/01/pengertian-tree-pada-struktur-data.html (diakses
tanggal 28 september 2021)

14

Anda mungkin juga menyukai