Oleh:
Anjas Subhanuari (151402043)
Ryan Fachrozy (151402044)
Mata Kuliah:
Praktikum Struktur Data dan Algoritma
Asisten Laboratorium:
Ruswan Efendi
KELAS B
PROGRAM STUDI S-1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2016
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
Kata Pengantar
Puji dan syukur penulis sampaikan kepada Allah swt., Tuhan Yang Maha Esa, yang telah
memberikan rahmat-Nya kepada penulis, sehingga penulis mampu menyelesaikan Makalah Resume
Materi Praktikum Struktur Data dan Algoritma ini.
Penulis mengucapkan terimakasih kepada Abangda Ruswan Efendi yang telah membimbing
serta mendukung kami adik-adik mahasiswanya dalam pelaksanaan Praktikum Struktur Data dan
Algoritma pada program studi strata 1 Teknologi Informasi, Universitas Sumatera Utara pada semester
ganjil ini.
Akhirnya, penulis menyadari bahwa masih terdapat banyak kekurangan dalam Makalah ini,
sehingga segala kritik dan saran yang bersifat membangun akan penulis terima dengan senang hati.
Penulis
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
Daftar Isi
Kata Pengantar...........................................................................................................................................................1
Daftar Isi..................................................................................................................................................................... 2
BAB I......................................................................................................................................................................... 3
BAB II........................................................................................................................................................................ 4
2.1. Array.........................................................................................................................................................4
2.1.1. Pengertian Array............................................................................................................................4
2.1.2. Array Satu Dimensi.......................................................................................................................4
2.1.3. Array Dua Dimensi........................................................................................................................4
2.1.4. Array Multi Dimensi......................................................................................................................5
2.2. Stack dan Queues......................................................................................................................................5
2.2.1. Stack..............................................................................................................................................5
2.2.2. Queues...........................................................................................................................................5
2.3. Rekursif....................................................................................................................................................6
2.4. Graph........................................................................................................................................................6
2.5. Trees.........................................................................................................................................................7
2.6.1 Binary Tree....................................................................................................................................7
2.6.2 Binary Search Tree.........................................................................................................................7
2.6. Linear and Binary Search..........................................................................................................................7
2.6.1 Linear Search.................................................................................................................................7
2.6.2 Binary Search.................................................................................................................................8
2.7. Sorting......................................................................................................................................................8
2.8.1 Bubble Sort....................................................................................................................................8
2.8.2 Selection Sort.................................................................................................................................9
2.8.3 Quick Sort....................................................................................................................................10
2.8.4 Insertion Sort...............................................................................................................................11
2.8.5 Merge Sort...................................................................................................................................12
2.8. Prims and Kruskals Algorithm..............................................................................................................13
2.10.1 Prim.............................................................................................................................................13
2.10.2 Kruskal........................................................................................................................................14
2.9. Shortest Paths.........................................................................................................................................16
2.10. Algoritma Kompresi...............................................................................................................................16
2.10.3 Huffman Code..............................................................................................................................17
2.10.4 Hukum Shannon-Fano.................................................................................................................17
2.11. Enkripsi Data..........................................................................................................................................18
2.11.1 Caesar Shiper...............................................................................................................................18
2.11.2 Vigenere Chiper...........................................................................................................................18
BAB III.....................................................................................................................................................................20
3.1. Kesimpulan.............................................................................................................................................20
3.2. Kritik dan Saran......................................................................................................................................20
Daftar Pustaka..........................................................................................................................................................21
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
BAB I
Pendahuluan
Pada zaman serba cepat dan penuh dengan kecanggihan teknologi berupa alat-alat canggih
yang dipadukan dengan program yang handal saat ini sudah menjadi tuntutan bagi masyarakat luas.
Para pembuat program tentu harus betul-betul membuat program dengan waktu eksekusi yang sangat
efisien tetapi handal. Untuk itu, diperlukan algoritma-algoritma yang tepat pula untuk mencapai
kebutuhan tersebut.
Struktur data adalah suatu pengelolaan data sehingga data dapat dipergunakan secara lebih
efisien dan efektif. Dalam bahasa pemrograman, struktur data seringkali ditampakkan secaa fisik
dalam bentuk tabel (biasanya pada bahasa pemrograman/pengelolaan database berbasis visual), namun
pada beberapa bahasa pemrograman yang tidak berbasis visual, strutkur data lebih berupa pengelolaan
data dengan aturan-aturan tertentu.1
Algoritma adalah urutan langkah untuk menyelesaikan masalah secara sistematis dan logis.
Algoritma menawarkan suatu metode dalam menyelesaikan sebuah permasalahan. Algoritma diartikan
sebagai urutan langkah dalam menyelesaikan masalah secara sistematis dan logis. Pendekatan secara
sistematis dan logis tersebut, menjadikan proses penyelesaian masalah terjaga kebenarannya karena
algoritma hendaklah benar agar dapat menghasilkan keluaran/solusi yang benar pula. Penyelesaian
masalah(problem solving) adalah kegiatan utama yang dilakukan dalam menyelesaiakan sesuatu.2
Dari uraian diatas mengenai pengertian struktur data dan algortima, maka jelas bagi kita bahwa
dalam membuat sebuah program komputer ataupun aplikasi, kita perlu menggunakan sebuah
algoritma-algoritma yang paling baik. Sehingga program yang dibuat tersebut dapat dieksekusi
sempurna, dengan efisiensi waktu yang baik pula. Adapun bahasa pemrograman yang digunakan
adalah bahasa C++.
Resume materi praktikum struktur data dan algoritma yang kami susun ini merupakan makalah
yang berisi materi-materi yang dipelajari selama satu semester pada mata kuliah Praktikum Struktur
Data dan Algoritma. Pembahasan materi yang ada didalam makalah ini disusun sedemikian rupa dari
apa yang telah dipelajari, ditambah dengan beberapa referensi yang diambil secara online (daring) dari
Internet. Kami sangat berharap kiranya makalah yang kami susun ini dapat berguna bagi siapapun
yang membacanya
1 Sumber : http://indra-cwogat.blogspot.co.id/2013/12/pengertian-algoritma-dan-struktur-data.html
2 Sumber : http://indra-cwogat.blogspot.co.id/2013/12/pengertian-algoritma-dan-struktur-data.html
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
BAB II
Pembahasan
2.1. Array
2.1.1. Pengertian 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 indeks sesuai dengan urutannya. Melalui indeks inilah kita dapat
mengakses data-data tersebut. Indeks dari elemen array ini, dimulai dari 0, bukan 1.
Array dideklarasikan dengan tanda [ ].
Bentuk umum:
tipe_data
nama_array[jumlah_elemen];
Contoh:
int nilai_mhs[5];
Bentuk umum:
tipe_data nama_array[baris]
[kolom];
Bentuk umum:
tipe_data nama_array[ukuran1] [ukuran2]
[....];
Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah
Push dan Pop. Operasi operasi yang dapat diterapkan adalah sebagai berikut :
1. Push : digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
2. Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.
3. Clear : digunakan untuk mengosongkan Stack.
4. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.
5. MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen
dihapus.
6. IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
7. Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.
Pada proses Push, Tumpukan (Stack) harus diperiksa apakah jumlah elemen
sudah mencapai masimum atau tidak. Jika sudah mencapai maksimum maka
OVERFLOW, artinya Tumpukan penuh tidak ada elemen yang dapat dimasukkan
ke dalam Tumpukan. Sedangkan pada proses Pop, Tumpukan harus diperiksa
apakah ada elemen yang hendak dikeluarkan atau tidak. Jika tidak ada maka
UNDERFLOW, artinya tumpukan kosong tidak ada elemen yang dapat diambil.
2.2.2. Queues
Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan
Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang
bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku
pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe
integer, real, record dalam bentuk sederhana atau terstruktur.
Tumpukan disebut juga Waiting Line yaitu penambahan elemen baru dilakukan
pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan.
Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First
Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari
Queue.
2. Make NullQ (Q) : mengosongkan antrian Q, jika ada elemen maka semua
elemen dihapus.
3. EnQueue : berfungsi memasukkan data kedalam antrian.
4. DeqQueue : berfungsi mengeluarkan data terdepan dari antrian.
5. Clear : Menghapus seluruh Antrian
6. IsEmpty : memeriksa apakah antrian kosong
7. IsFull : memeriksa apakah antrian penuh.
2.3. Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri.
Pada beberapa persoalan, fungsi rekursif sangat berguna karena
mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki
kelemahan, yakni memungkinkan terjadinya overflow pada stack, yang
berarti stack tidak lagi mampu menangani permintaan pemanggilan
fungsi karena kehabisan memori( stack adalah area memori yang dipakai
untuk variable lokal untuk mengalokasikan memori ketika suatu fungsi
dipanggil.
2.4. Graph
Graph 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 dari graph adalah dengan menyatakan objek sebagai noktah, bulatan
atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis (Edge).
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.
1. 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
2. Graph berarah (directed graph) :Urutan simpul mempunyai arti. Misal busur AB adalah
e1 sedangkan busur BA adalah e8.
3. 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
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
2.5. Trees
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).
2.7. Sorting
Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya
disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta
pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan, yaitu
Ascending (Naik) dan Descending (Turun).
Contoh:
2.10.2 Kruskal
Algoritma Kruskal adalah algoritma untuk mencari pohon merentang minimum
secara langsung didasarkan pada algoritma MST (Minimum Spanning Tree) umum.
Pada algoritma Kruskal sisi-sisi di dalam graf diurut terlebih dahulu berdasarkan
bobotnya dari kecil ke besar. Sisi yang dimasukkan ke dalam himpunan T adalah sisi
graf G sedemikian sehingga T adalah pohon. Pada keadaan awal, sisi-sisi sudah
diurut berdasarkan bobot membentuk hutan (forest). Hutan tersebut dinamakan hutan
merentang (spanning forest). Sisi dari graf G ditambahkan ke T jika tidak
membentuk sirkuit di T. Perbedaan prinsip antara algoritma Prim dan Kruskal adalah
jika pada algoritma Prim sisi yang dimasukkan ke dalam T harus bersisian dengan
sebuah simpul di T, maka pada algoritma Kruskal sisi yang dipilih tidak perlu
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
kebutuhan bandwith. Sebuah teks yang menggunakan karakter yang cukup panjang, namun
dalam teks tersebut terdapat beberapa karakter yang sama, akan membutuhkan ruang data
yang besar pula. Maka dengan algoritma ini, ukuran data tersebut dapat diperkecil.
Enkripsi adalah suatu metode yang digunakan untuk mengkodekan data sedemikian
rupa sehingga keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi
(kebalikan dari
proses enkripsi) dahulu. Encryption berasal dari bahasa yunani kryptos yang artinya
tersembunyi atau rahasia.
Untuk menyandikan sebuah pesan, cukup mencari setiap huruf yang hendak disandikan
di alfabet biasa, lalu tuliskan huruf yang sesuai pada alfabet sandi. Untuk memecahkan
sandi tersebut gunakan cara sebaliknya. Contoh penyandian sebuah pesan adalah
sebagai berikut.
atau
Ci = ( Pi + Ki ) 26 kalau hasil penjumlahan Pi dan Ki lebih dari 26
atau
Pi = ( Ci Ki ) + 26 kalau hasil pengurangan Ci dengan Ki minus
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
Keterangan :
Ci = nilai desimal karakter ciphertext ke-i
Pi = nilai desimal karakter plaintext ke-i
Ki = nilai desimal karakter kunci ke-i
Nilai desimal karakter: A=0 B=1 C=2 ... Z=25
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016
BAB III
Penutup
3.1. Kesimpulan
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 indeks sesuai dengan
urutannya. Stack adalah suatu tumpukan atau kumpulan data yang menggunakan konsep LIFO
(last in first out). Elemen terakhir yang di letakan adalah elemen pertama yang akan diambil.
Konsepnya sama seperti tumpukan benda yang biasa kita temukan dalam kehidupan sehari-
hari.
Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan Stack,
perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda.
Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian
belakang (Rear). Fungsi rekursif adalah suatu fungsi yang memanggil dirinya
sendiri. Pada beberapa persoalan, fungsi rekursif sangat berguna karena
mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki
kelemahan. Graph 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 dari graph
adalah dengan menyatakan objek sebagai noktah, bulatan atau titik (Vertex), sedangkan
hubungan antara objek dinyatakan dengan garis (Edge).
Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya
disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta
pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan, yaitu
Ascending (Naik) dan Descending (Turun). Kompresi data adalah proses pengkodean informasi
menggunakan bit atau information-bearing unit yang lain yang lebih rendah daripada
representasi data yang tidak terkodekan dengan suatu system encoding tertentu. Secara umum,
kompresi dapat diartikan dengan mengecilkan ukuran, dalam hal ini adalah data. Enkripsi
adalah suatu metode yang digunakan untuk mengkodekan data sedemikian rupa sehingga
keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi (kebalikan dari proses
enkripsi) dahulu. Encryption berasal dari bahasa yunani kryptos yang artinya tersembunyi atau
rahasia.
Daftar Pustaka
https://wikimedia.org/api/rest_v1/media/math/render/svg/527bbbcf03d10d7ba8256a14188
9b6fcbc4f6708
https://id.wikipedia.org/wiki/Sandi_Vigen%C3%A8re
https://id.wikipedia.org/wiki/Sandi_Caesar
https://id.wikipedia.org/wiki/Algoritma_Dijkstra
https://en.wikipedia.org/wiki/Kruskal's_algorithm
https://id.wikipedia.org/wiki/Algoritma_Prim
https://asmauna.wordpress.com/2013/04/04/minimum-spaning-tree-algoritma-kruskal-dan-
algoritma-prim/
https://furqonubd.wordpress.com/category/struktur-data-data-structures/
https://en.wikipedia.org/wiki/Binary_search_tree
https://www.academia.edu/11495212/Modul_Struktur_Data_Lengkap
http://elektro.um.ac.id/wp-content/uploads/2016/09/Modul-7-Tree-2015.pdf
http://arna.lecturer.pens.ac.id/Modul_ASD/11.%20Tree.pdf
http://entin.lecturer.pens.ac.id/Struktur%20Data%20&%20Algoritma/buku/Data
%20Structure%20-%20Bab%201.pdf