langkah mudah menggunakan c/c++ · pdf filetentang hak cipta 1. setiap orang yang dengan tanpa...
TRANSCRIPT
Langkah Mudah
Belajar Struktur Data
Menggunakan C/C++
Sanksi Pelanggaran Pasal 113 Undang-Undang Nomor 28 Tahun 2014 tentang Hak Cipta
1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf i untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 1 (satu) tahun dan/atau pidana denda paling banyak Rp100.000.000 (seratus juta rupiah).
2. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf c, huruf d, huruf f, dan/atau huruf h untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 3 (tiga) tahun dan/atau pidana denda paling banyak Rp500.000.000,00 (lima ratus juta rupiah).
3. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf a, huruf b, huruf e, dan/atau huruf g untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 4 (empat) tahun dan/atau pidana denda paling banyak Rp1.000.000.000,00 (satu miliar rupiah).
4. Setiap Orang yang memenuhi unsur sebagaimana dimaksud pada ayat (3) yang dilakukan dalam bentuk pembajakan, dipidana dengan pidana penjara paling lama 10 (sepuluh) tahun dan/atau pidana denda paling banyak Rp4.000.000.000,00 (empat miliar rupiah).
Langkah Mudah
Belajar Struktur Data
Menggunakan C/C++
Prof. Dr. Ema Utami, S.Si., M.Kom.
Windha Mega Pradnya Dhuhita, S.Kom, M.Kom.
PENERBIT PT ELEX MEDIA KOMPUTINDO
Langkah Mudah Belajar Struktur Data Menggunakan C/C++
Prof. Dr. Ema Utami, S.Si., M.Kom. Windha Mega Pradnya Dhuhita, S.Kom, M.Kom. 2017, PT Elex Media Komputindo, Jakarta Hak cipta dilindungi undang-undang Diterbitkan pertama kali oleh Penerbit PT Elex Media Komputindo Kelompok Gramedia, Anggota IKAPI, Jakarta 2017
ID: 717051490
ISBN: 978-602-04-4540-3
Dilarang keras menerjemahkan, memfotokopi, atau memperbanyak sebagian atau seluruh isi buku ini tanpa izin tertulis dari penerbit.
Dicetak oleh Percetakan PT Gramedia, Jakarta
Isi di luar tanggung jawab percetakan
ix
Daftar Isi
Kata Pengantar ........................................................................... v Daftar Isi ................................................................................... ix
Bab 1 Pendahuluan ..................................................... 1 1.1 Implementasi Struktur Data ................................... 2 1.2 Tipe Data Elementer dan Struktur Data ................... 2
Bab 2 Array dan String ................................................ 7 2.1 Array Satu Dimensi .............................................. 9
2.1.1 Deklarasi Array Satu Dimensi .............................. 9
2.1.2 Pemberian Nilai Array Satu Dimensi .................... 9
2.1.3 Menampilkan Isi Array Satu Dimensi .................. 11
2.2 Array Dua Dimensi ............................................ 13 2.2.1 Deklarasi Array Dua Dimensi ............................ 13
2.2.2 Pemberian Nilai Array Dua Dimensi .................. 14
2.2.3 Menampilkan Isi Array Dua Dimensi .................. 15
2.3 String ............................................................... 17 2.4 Contoh Penerapan Array dan String .................... 20
Bab 3 Struktur ........................................................... 47 3.1 Definisi Struktur ................................................. 48 3.2 Pengaksesan Elemen Struktur .............................. 50 3.3 Pengaksesan Elemen Nested Struct ...................... 52 3.4 Struct of Array ................................................... 55
x
3.5 Contoh Penerapan Struktur ................................. 57
Bab 4 Subprogram dan Rekursi ................................. 73 4.1 Subprogram ..................................................... 74 4.2 Rekursi ............................................................. 79 4.3 Contoh Penerapan Subprogram dan Rekursi ........ 87
Bab 5 Sorting ............................................................. 97 5.1 Metode Selection Sort ........................................ 98
5.1.1 Pengurutan Naik (Ascending) ............................ 98
5.1.2 Pengurutan Turun (Descending) ....................... 102
5.2 Metode Bubble Sort ......................................... 106 5.2.1 Pengurutan Naik (Ascending) .......................... 106
5.2.2 Pengurutan Turun (Descending) ....................... 112
5.3 Metode Insertion Sort ....................................... 113 5.3.1 Pengurutan Naik (Ascending) .......................... 113
5.3.2 Pengurutan Turun (Descending) ....................... 116
5.4 Metode Merge Sort ......................................... 118 5.4.1 Pengurutan Naik (Ascending) .......................... 118
5.4.2 Pengurutan Turun (Descending) ....................... 126
5.5 Contoh Penerapan Sorting ............................... 133
Bab 6 Searching ...................................................... 137 6.1 Metode Sequential Search ................................ 138
6.1.1 Pencarian pada Array Belum Terurut ................ 138
6.1.2 Pencarian pada Array Terurut ......................... 141
6.2 Metode Binary Search ..................................... 145 6.3 Pencarian pada Struct of Array ......................... 148 6.4 Contoh Penerapan Searching ........................... 150
Bab 7 Stack ............................................................. 153 7.1 Single Stack .................................................... 154
xi
7.2 Operasi-Operasi Single Stack ........................... 154 7.3 Contoh Penerapan Single Stack ........................ 161 7.4 Double Stack .................................................. 183 7.5 Operasi-Operasi Double Stack .......................... 184 7.6 Contoh Penerapan Double Stack ....................... 187
Bab 8 Queue ........................................................... 209 8.1 Implementasi Queue dengan Linear Array .......... 210 8.2 Operasi-Operasi Queue dengan Linear Array .... 211 8.3 Contoh Penerapan Queue dengan Linear Array .. 214 8.4 Implementasi Queue dengan Circular Array ....... 230 8.5 Operasi-Operasi Queue dengan Circular
Array ............................................................. 232 8.6 Contoh Penerapan Queue dengan Circular
Array ............................................................. 234
Bab 9 Pointer dan Linked List ................................... 253 9.1 Variabel Pointer .............................................. 253 9.2 Operasi-Operasi Pointer ................................... 255 9.3 Alokasi Dinamis pada Pointer ........................... 255 9.4 Contoh Penerapan Pointer ................................ 256 9.5 Linked List ....................................................... 258 9.6 Operasi-Operasi Linked List .............................. 259 9.7 Contoh Penerapan Linked List ........................... 270
Bab 10 Evaluasi ......................................................... 277 10.1 Contoh Implementasi Struktur Data .................... 277 10.2 Latihan Soal .................................................... 293
Daftar Pustaka ........................................................................ 295 Tentang Penulis ...................................................................... 297
1
Pendahuluan
Kompetensi Dasar (Tujuan Pembelajaran Umum):
Memahami pengertian dan konsep dasar Struktur Data. Indikator:
1. Mampu mendeskripsikan pengertian Struktur Data. 2. Mampu menggunakan struktur data yang tepat dalam pemrograman.
Struktur data merupakan ilmu yang harus dikuasai oleh seseorang yang
terjun dalam dunia informatika, seperti mempelajari bahasa
pemrograman, membuat sistem operasi, atau membuat media
penyimpanan data.
Mempelajari struktur data seperti mengatur almari pakaian. Kita harus
menata dan mengelompokkannya sedemikian rupa agar almari terlihat
rapi, mudah dalam pencarian pakaian, serta dapat memuat banyak
pakaian. Berdasarkan analogi di atas, struktur data adalah cara
pengorganisasian data dalam komputer agar penyimpanan data dan
penggunaan memori komputer lebih efisien, mudah dalam pengaksesan
data, dan memudahkan dalam pembacaan algoritma pemrograman.
Pengorganisasian yang dimaksud meliputi bentuk data disimpan,
disusun, dan dikelompokkan.
2
1.1 Implementasi Struktur Data Pengorganisasian data memerlukan algoritma yang tepat agar tujuan
efisiensi memory tercapai. Untuk itu, dalam buku ini akan diulas macam-
macam struktur data dan algoritma-nya.
Beberapa implementasi struktur data dalam pemrograman di antaranya
adalah pada basis data, pengolahan kata, berkas-berkas, dan semua yang
berhubungan dengan pengelolaan data, seperti pencarian data, peng-
urutan data, manajemen penyimpanan data, dan pengelompokan data.
1.2 Tipe Data Elementer dan Struktur Data Apabila berbicara mengenai pengolahan data, maka kita juga perlu
memahami tentang tipe data dan bagaimana data tersebut ditampilkan.
Data dapat dikelompokkan menjadi:
1. Tipe data elementer tunggal, contohnya:
a. Karakter: berupa huruf, simbol, angka yang ditulis dalam tanda
petik tunggal). Contoh: 'A', '3', '&'.
b. Integer: berupa bilangan bulat dan dapat dikenakan operasi
matematis.
c. Real: berupa bilangan pecahan desimal.
d. Boolean: tipe data yang hanya mempunyai dua nilai, yaitu TRUE
(benar) dan FALSE (salah).
2. Tipe data elementer majemuk, contohnya string yang merupakan
kumpulan dari karakter yang pemberian nilainya menggunakan
tanda petik (" ").
3. Struktur data sederhana, di antaranya:
a. Array, yaitu sekumpulan data yang memiliki tipe data yang
sama.
b. Record, yaitu sekumpulan data yang terdiri atas beberapa field
yang mempunyai tipe data yang bermacam-macam.
3
4. Struktur data majemuk, di antaranya:
a. Linear, contohnya: stack, queue, linear linked list.
b. Nonlinear, contohnya: tree, binary tree.
Untuk memudahkan dalam pemahaman, berikut perbedaan antara tipe
data sederhana dan struktur data yang disajikan dalam tabel 1.1 di bawah
ini:
Tabel 1.1 Perbandingan Tipe Data Elementer dan Struktur Data
Parameter Pembanding
Tipe Data Elementer Struktur Data
Jumlah data Hanya mempunyai satu nilai tiap satu variabelnya
Terdiri atas beberapa nilai dalam satu variabel
Jenis data Tipe dasar Tipe terstruktur
Perhatikan contoh program sederhana berikut ini:
include <stdio.h> main() { int i,data; for (i=1;i<6;i++) { printf (“Data ke-%i = “,i); scanf (“%i”,&data); } for (i=1;i<6;i++) { printf (“Data ke-%i = %i“,i,data); }
Misalkan, data-data yang diinputkan melalui keyboard adalah 10, 11, 12,
13, 14. Maka, program di atas akan menampilkan output:
14
14
14
4
for (i=1;i<6;i++) { printf (“Data ke-%i = “,i); scanf (“%i”,&data); }
14
14
Mengapa 10, 11, 12, 13 tidak tercetak? Karena variabel data hanya dapat
menampung satu buah nilai dan nilai yang disimpan oleh variabel data
adalah nilai yang terakhir kali dimasukkan (contoh di sini adalah 14).
Nilai terakhir inilah yang dicetak ke peranti keluaran pada setiap kali
perulangan.
Berikut ilustrasi dari program sederhana di atas:
1. Dideklarasikan variabel dengan nama data dengan tipe integer
data
2. Hasil kompilasi program di bawah ini:
Ketika i = 1 data ke-1 = 10
data
Ketika i = 2 data ke-2 = 11
data
Ketika i = 3 data ke-3 = 12
data
Ketika i = 3 data ke-4 = 13
data
Ketika i = 4 data ke-5 = 14
data
10
11
12
13
14
5
for (i=1;i<6;i++) { printf (“Data ke-%i = %i“,i,data); }
Ketika i = 6, perulangan berhenti, nilai terakhir variabel data = 14
3. Hasil kompilasi perulangan berikut:
ketika i = 1 data ke-1 = 14
ketika i = 2 data ke-2 = 14
ketika i = 3 data ke-3 = 14
ketika i = 4 data ke-4 = 14
ketika i = 5 data ke-5 = 14
ketika i = 6 perulangan berhenti
Jadi, variabel dengan tipe data elementer hanya dapat digunakan untuk
menyimpan satu nilai. Untuk menyimpan lebih dari satu nilai data
sekaligus dalam sebuah variabel, digunakan tipe data terstruktur. Contoh
tipe data terstruktur atau STRUKTUR DATA adalah array, struct, stack,
queue, dan lain-lain.
Adapun contoh-contoh program dalam buku ini menggunakan bahasa
C/C++. Terdapat pilihan perintah untuk input dan output-nya, seperti
cin-cout atau printf-scanf, serta gets.