langkah mudah menggunakan c/c++ · pdf filetentang hak cipta 1. setiap orang yang dengan tanpa...

13

Upload: phamdat

Post on 05-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree
Page 2: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

Langkah Mudah

Belajar Struktur Data

Menggunakan C/C++

Page 3: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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).

Page 4: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 5: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

[email protected]

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

Page 6: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 7: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 8: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 9: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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.

Page 10: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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.

Page 11: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 12: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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

Page 13: Langkah Mudah Menggunakan C/C++ · PDF filetentang Hak Cipta 1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi ... b. Nonlinear, contohnya: tree, binary tree

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.