Modul ini membahas tentang membuat struktur data dalam pemrograman komputer. Modul ini menjelaskan konsep dasar pelatihan berbasis kompetensi, penjelasan modul, standar kompetensi yang dipelajari, strategi dan metode pelatihan, serta materi pelatihan seperti array, searching, sorting, pointer, linked list, stack, queue, tree dan hash table. Modul ini bertujuan membantu peserta memahami dan mampu membuat berbagai struktur data dalam pemrograman.
1. MATERI PELATIHAN BERBASIS KOMPETENSI
SEKTOR TEKNOLOGI INFORMASI DAN
KOMUNIKASI
MEMBUAT STRUKTUR DATA
TIK.PR02.003.01
BUKU INFORMASI
DEPARTEMEN TENAGA KERJA DAN TRANSMIGRASI R.I.
DIREKTORAT JENDERAL PEMBINAAN PELATIHAN DAN PRODUKTIVITAS
Jl. Jend. Gatot Subroto Kav.51 Lt.7.B Jakarta Selatan
2.
3. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
DAFTAR ISI
Daftar Isi Hal........................................................................................................1
BAB I PENGANTAR
4
1.1. Konsep Dasar Pelatihan Berbasis Kompetensi
4
1.2. Penjelasan Modul
4
1.2.1 Isi Modul
4
1.2.2 Pelaksanaan Modul
5
1.3. Pengakuan Kompetensi Terkini (RCC)
6
1.4. Pengertian-pengertian Istilah
7
BAB II STANDAR KOMPETENSI
9
2.1. Peta Paket Pelatihan
9
2.2. Pengertian Unit Standar Kompetensi
9
2.3. Unit Kompetensi yang Dipelajari
10
2.3.1. Judul Unit
Judul Modul: Membuat Struktur Data Halaman: 1 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
4. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
....................................................................................
10
2.3.2. Kode Unit
....................................................................................
10
2.3.3. Deskripsi Unit
....................................................................................
10
2.3.4. Elemen Kompetensi
....................................................................................
11
2.3.5. Batasan Variabel
....................................................................................
13
2.3.6. Panduan Penilaian
....................................................................................
13
2.3.7. Kompetensi Kunci
....................................................................................
14
BAB III STRATEGI DAN METODE PELATIHAN
15
3.1. Strategi Pelatihan
15
3.2. Metode Pelatihan
16
BAB IV MATERI UNIT KOMPETENSI
17
4.1 Pengertian Algoritma ...................................
...................................................................................................
18
4.2 Perbedaan antara Tipe Data, Obyek Data dan Struktur Data
Judul Modul: Membuat Struktur Data Halaman: 2 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
5. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
...................................................................................................
18
4.2.1 ADT (Abstract Data Type) atau tipe data bentukan
.......................................................................................
20
4.3 Array
...................................................................................................
22
4.3.1 Apakah itu Array ?
.......................................................................................
22
4.3.2 Pengaksesan Elemen Array
.......................................................................................
22
4.3.3 Deklarasi Array 1 Dimensi
.......................................................................................
23
4.3.4 Penjelasan Array 1 Dimensi
.......................................................................................
24
4.3.5 Deklarasi Array 2 Dimensi
.......................................................................................
24
4.4 Searching .................................................
...................................................................................................
29
4.4.1 Pengertian Searching
.......................................................................................
29
4.4.2 Teknik-teknik Searching
.......................................................................................
29
4.5 Sorting
...................................................................................................
32
4.5.1 Bubble Sort
Judul Modul: Membuat Struktur Data Halaman: 3 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
6. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
.......................................................................................
33
4.5.2 Selection Sort
.......................................................................................
34
4.5.3 Insertion Sort
.......................................................................................
35
4.5.4 Tabel Perbandingan Kecepatan Metode Pengurutan
Data
.......................................................................................
35
4.6 Pointer ........................................................................................36
4.6.1 Apa itu Pointer ? ..............................................................36
4.6.2 Deklarasi Pointer .............................................................38
4.6.3 Operasi pada Pointer .......................................................38
4.6.4 Pointer pada Array 1 dan 2 Dimensi ..................................42
4.7 Linked List ...................................................................................44
4.7.1 Apa itu Linked List ? ........................................................44
4.7.2 Single Linked List Non Circular .........................................45
4.7.3 Single Linked List Circular ................................................54
4.7.4 Double Linked List Non Circular ........................................71
4.7.5 Double Linked List Circular ...............................................84
4.8 List dalam Stack dan Queue .........................................................98
4.8.1 Pengertian Stack .............................................................98
4.8.2 Operasi Fungsi Stack .......................................................99
4.8.3 Queue dengan Menggunakan Array ..................................101
4.9 List dalam Tree ............................................................................105
4.9.1 Pengertian Tree ...............................................................105
4.9.2 Implementasi Program Tree .............................................106
4.10 Hash Table ..................................................................................108
4.11 Mengoperasikan File .....................................................................109
4.11.1 Membuka File ..................................................................110
Judul Modul: Membuat Struktur Data Halaman: 4 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
7. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.11.2 Menulis ke File ................................................................111
4.11.3 Penambahan Data pada File .............................................111
4.11.4 Menutup File ...................................................................112
BAB V SUMBER-SUMBER YANG DIPERLUKAN UNTUK PENCAPAIAN
KOMPETENSI..................
114
5.1. Sumber Daya Manusia
114
5.2. Sumber-sumber Perpustakaan
115
5.3. Daftar Peralatan dan Bahan yang digunakan
116
DAFTAR PUSTAKA
118
Judul Modul: Membuat Struktur Data Halaman: 5 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
8. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
BAB I
PENGANTAR
1.1. Konsep Dasar Pelatihan Berbasis Kompetensi
• Apakah pelatihan berdasarkan kompetensi?
Pelatihan berdasarkan kompetensi adalah pelatihan yang memperhatikan
pengetahuan, keterampilan dan sikap yang diperlukan di tempat kerja agar
dapat melakukan pekerjaan dengan kompeten. Standar Kompetensi dijelaskan
oleh Kriteria Unjuk Kerja.
• Apakah artinya menjadi kompeten ditempat kerja?
Jika Anda kompeten dalam pekerjaan tertentu, Anda memiliki seluruh
keterampilan, pengetahuan dan sikap yang perlu untuk ditampilkan secara
efektif ditempat kerja, sesuai dengan standar yang telah disetujui.
1.2 Penjelasan Modul
Modul ini didisain untuk dapat digunakan pada Pelatihan Klasikal dan Pelatihan
Individual/mandiri :
• Pelatihan klasikal adalah pelatihan yang disampaiakan oleh seorang pelatih.
• Pelatihan individual/mandiri adalah pelatihan yang dilaksanakan oleh peserta
dengan menambahkan unsur-unsur/sumber-sumber yang diperlukan dengan
bantuan dari pelatih.
1.2.1 Isi Modul
a. Buku Informasi
Buku informasi ini adalah sumber pelatihan untuk pelatih maupun peserta
pelatihan.
Judul Modul: Membuat Struktur Data Halaman: 6 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
9. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
b. Buku Kerja
Buku kerja ini harus digunakan oleh peserta pelatihan untuk mencatat
setiap pertanyaan dan kegiatan praktik baik dalam Pelatihan Klasikal
maupun Pelatihan Individual / mandiri.
Buku ini diberikan kepada peserta pelatihan dan berisi :
• Kegiatan-kegiatan yang akan membantu peserta pelatihan untuk
mempelajari dan memahami informasi.
• Kegiatan pemeriksaan yang digunakan untuk memonitor pencapaian
keterampilan peserta pelatihan.
• Kegiatan penilaian untuk menilai kemampuan peserta pelatihan dalam
melaksanakan praktik kerja.
c. Buku Penilaian
Buku penilaian ini digunakan oleh pelatih untuk menilai jawaban dan
tanggapan peserta pelatihan pada Buku Kerja dan berisi :
• Kegiatan-kegiatan yang dilakukan oleh peserta pelatihan sebagai
pernyataan keterampilan.
• Metode-metode yang disarankan dalam proses penilaian keterampilan
peserta pelatihan.
• Sumber-sumber yang digunakan oleh peserta pelatihan untuk
mencapai keterampilan.
• Semua jawaban pada setiap pertanyaan yang diisikan pada Buku
Kerja.
• Petunjuk bagi pelatih untuk menilai setiap kegiatan praktik.
• Catatan pencapaian keterampilan peserta pelatihan.
1.2.2 Pelaksanaan Modul
Pada pelatihan klasikal, pelatih akan :
Judul Modul: Membuat Struktur Data Halaman: 7 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
10. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
• Menyediakan Buku Informasi yang dapat digunakan peserta pelatihan
sebagai sumber pelatihan.
• Menyediakan salinan Buku Kerja kepada setiap peserta pelatihan.
• Menggunakan Buku Informasi sebagai sumber utama dalam
penyelenggaraan pelatihan.
• Memastikan setiap peserta pelatihan memberikan jawaban /
tanggapan dan menuliskan hasil tugas praktiknya pada Buku Kerja.
Pada Pelatihan individual / mandiri, peserta pelatihan akan :
• Menggunakan Buku Informasi sebagai sumber utama pelatihan.
• Menyelesaikan setiap kegiatan yang terdapat pada buku Kerja.
• Memberikan jawaban pada Buku Kerja.
• Mengisikan hasil tugas praktik pada Buku Kerja.
• Memiliki tanggapan-tanggapan dan hasil penilaian oleh pelatih.
1.3Pengakuan Kompetensi Terkini (RCC)
• Apakah Pengakuan Kompetensi Terkini (Recognition of Current Competency).
Jika Anda telah memiliki pengetahuan dan keterampilan yang diperlukan untuk
elemen unit kompetensi tertentu, Anda dapat mengajukan pengakuan
kompetensi terkini (RCC). Berarti Anda tidak akan dipersyaratkan untuk belajar
kembali.
• Anda mungkin sudah memiliki pengetahuan dan keterampilan, karena Anda
telah :
a. Bekerja dalam suatu pekerjaan yang memerlukan suatu pengetahuan dan
keterampilan yang sama atau
b. Berpartisipasi dalam pelatihan yang mempelajari kompetensi yang sama
atau
c. Mempunyai pengalaman lainnya yang mengajarkan pengetahuan dan
keterampilan yang sama.
Judul Modul: Membuat Struktur Data Halaman: 8 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
11. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
1.4Pengertian-pengertian Istilah
Profesi
Profesi adalah suatu bidang pekerjaan yang menuntut sikap, pengetahuan serta
keterampilan/keahlian kerja tertentu yang diperoleh dari proses pendidikan,
pelatihan serta pengalaman kerja atau penguasaan sekumpulan kompetensi
tertentu yang dituntut oleh suatu pekerjaan/jabatan.
Standardisasi
Standardisasi adalah proses merumuskan, menetapkan serta menerapkan suatu
standar tertentu.
Penilaian / Uji Kompetensi
Penilaian atau Uji Kompetensi adalah proses pengumpulan bukti melalui
perencanaan, pelaksanaan dan peninjauan ulang (review) penilaian serta
keputusan mengenai apakah kompetensi sudah tercapai dengan membandingkan
bukti-bukti yang dikumpulkan terhadap standar yang dipersyaratkan.
Pelatihan
Pelatihan adalah proses pembelajaran yang dilaksanakan untuk mencapai suatu
kompetensi tertentu dimana materi, metode dan fasilitas pelatihan serta
lingkungan belajar yang ada terfokus kepada pencapaian unjuk kerja pada
kompetensi yang dipelajari.
Kompetensi
Kompetensi adalah kemampuan seseorang untuk menunjukkan aspek sikap,
pengetahuan dan keterampilan serta penerapan dari ketiga aspek tersebut
ditempat kerja untuk mencapai unjuk kerja yang ditetapkan.
Judul Modul: Membuat Struktur Data Halaman: 9 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
12. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Standar Kompetensi
Standar kompetensi adalah standar yang ditampilkan dalam istilah-istilah hasil
serta memiliki format standar yang terdiri dari judul unit, deskripsi unit, elemen
kompetensi, kriteria unjuk kerja, ruang lingkup serta pedoman bukti.
Sertifikat Kompetensi
Adalah pengakuan tertulis atas penguasaan suatu kompetensi tertentu kepada
seseorang yang dinyatakan kompeten yang diberikan oleh Lembaga Sertifikasi
Profesi.
Sertifikasi Kompetensi
Adalah proses penerbitan sertifikat kompetensi melalui proses penilaian / uji
kompetensi.
Judul Modul: Membuat Struktur Data Halaman: 10 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
13. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
BAB II
STANDAR KOMPETENSI
2.1. Peta Paket Pelatihan
Modul yang sedang Anda pelajari ini adalah untuk mencapai satu unit kompetensi,
yang termasuk dalam satu paket pelatihan, yang terdiri atas unit-unit kompetensi
berikut:
2.1.1. TIK.PR02.003.01 Membuat Struktur Data
2.1.2. TIK.OP02.003.01 Mengoperasikan Sistem Operasi
2.1.3. TIK.OP02.001.01 Mengoperasikan komputer personal yang berdiri
sendiri (PC stand alone)
2.1.4. TIK.PR02.001.01 Membuat Algoritma Pemrograman Dasar
2.1.5. TIK.PR02.002.01 Membuat Algoritma Pemrograman Lanjut
2.1.6. TIK.PR02.008.01 Mengoperasikan Pemrograman Terstruktur
2.2. Pengertian Unit Standar Kompetensi
Apakah Standar Kompetensi?
Setiap Standar Kompetensi menentukan :
a. Pengetahuan dan keterampilan yang diperlukan untuk mencapai kompetensi.
b. Standar yang diperlukan untuk mendemonstrasikan kompetensi.
c. Kondisi dimana kompetensi dicapai.
Apa yang akan Anda pelajari dari Unit Kompetensi ini?
Anda akan diajarkan untuk mempelajari struktur data yang akan diterapkan
pada setiap pemrograman yang akan dipakai.
Berapa lama Unit Kompetensi ini dapat diselesaikan?
Pada sistem pelatihan berdasarkan kompetensi, fokusnya ada pada pencapaian
kompetensi, bukan pada lamanya waktu. Namun diharapkan pelatihan ini dapat
dilaksanakan dalam jangka waktu satu sampai dua hari. Pelatihan ini ditujukan
Judul Modul: Membuat Struktur Data Halaman: 11 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
14. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
bagi semua pengguna terutama yang tugasnya berkaitan dengan pemrograman
seperti programmer C atau C++.
Berapa banyak/kesempatan yang Anda miliki untuk mencapai
kompetensi?
Jika Anda belum mencapai kompetensi pada usaha/kesempatan pertama, Pelatih
Anda akan mengatur rencana pelatihan dengan Anda. Rencana ini akan
memberikan Anda kesempatan kembali untuk meningkatkan level kompetensi
Anda sesuai dengan level yang diperlukan.
Jumlah maksimum usaha/kesempatan yang disarankan adalah 3 (tiga) kali.
2.3. Unit Kompetensi yang Dipelajari
Dalam sistem pelatihan, Standar Kompetensi diharapkan menjadi panduan bagi
peserta pelatihan untuk dapat :
• mengidentifikasikan apa yang harus dikerjakan peserta pelatihan.
• memeriksa kemajuan peserta pelatihan.
• menyakinkan bahwa semua elemen (sub-kompetensi) dan kriteria unjuk
kerja telah dimasukkan dalam pelatihan dan penilaian.
2.3.1 JUDUL UNIT : Membuat Struktur Data
2.3.2 KODE UNIT : TIK.PR02.003.01
2.3.3 DESKRIPSI UNIT : Unit ini menentukan kompetensi yang diperlukan
untuk mempelajari struktur data yang akan
diterapkan pada setiap pemrograman yang akan
dipakai. Struktur data merupakan materi dasar
kelanjutan dari mengidentifikasi algoritma
pemrograman dengan lingkup pembahasan pada
pemanfaatan array dan pointer untuk kasus-kasus
yang mendekati kehidupan sehari-hari.
Judul Modul: Membuat Struktur Data Halaman: 12 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
15. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
2.3.4 ELEMEN KOMPETENSI
ELEMEN KOMPETENSI KRITERIA UNJUK KERJA
1 Menerapkan konsep 1.1 Program dengan berbagai tipe data dibuat.
data 1.2 Program dengan tipe data array dan pointer
dan struktur data
dibuat.
2 Menerapkan array dan 2.1 Algoritma program dengan array dan
record pengoperasiannya berupa pencarian dan
pengurutan dibuat.
2.2 Algoritma program dengan record seperti
pembuatan / penambahan, pengisian, pengubahan
dan penghapusan record dibuat.
2.3 Algoritma program dengan array dan record dibuat.
3 Menerapkan pointer 3.1 Algoritma program dengan tipe data pointer dibuat.
3.2 Algoritma program manipulasi data (penambahan,
pengurangan, pengisian data, dsb) tipe pointer
dibuat.
4 Menerapkan list berkait 4.1 Macam-macam list berkait dijelaskan. List berkait
dapat berupa list tunggal, list yang tercatat alamat
awal dan akhir, list ganda dsb.
4.2 Algoritma program dengan operasi list berkait
dibuat. Operasi list berkait yang diterapkan berupa
pembuatan elemen list, penambahan data ke dalam
elemen, penyambungan elemen ke dalam list,
pemutusan elemen dari list.
4.3 List berkait dengan tipe array dibuat. Dengan
penggunaan array sebagai list, maka komponen list
harus tetap direalisasikan.
4.4 List berkait dengan tipe pointer dibuat. Dengan
Judul Modul: Membuat Struktur Data Halaman: 13 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
16. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
penggunaan pointer sebagai list maka komponen
list harus tetap direalisasikan.
5 Menerapkan list berkait 5.1 List berkait dalam model antrian (queue) dalam
array dan pointer dibuat. Model antrian
direalisasikan.
5.2 List berkait untuk model tumpukan (stack)
dibuat. Model tumpukan direalisasikan dalam
bentuk array dan pointer.
5.3 List berkait untuk model graph dibuat. Model
graph direalisasikan dalam bentuk array pointer.
5.4 List berkait untuk model pohon dibuat. Model
pohon direalisasikan dalam bentuk array dan
pointer.
5.5 List berkait untuk model Hash table dibuat.
Model hash table direalisasikan dalam bentuk
array dan pointer.
6 Mengoperasikan file 6.1 List berkait untuk pencarian file indeks
secara list berkait dioperasikan. Penulisan file berbasis indeks
banyak digunakan terutama untuk menyimpan
data yang terorganisasi guna percepatan dalam
proses pencarian dilakukan berdasarkan indeks
yang telah disimpan pada list.
2.3.5 BATASAN VARIABEL
1. Unit ini berlaku untuk seluruh sektor teknologi informasi dan komunikasi.
2. Membuat struktur data bersifat internal pada bidang teknologi informasi
dan komunikasi.
Judul Modul: Membuat Struktur Data Halaman: 14 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
17. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
2.3.6 PANDUAN PENILAIAN
1. Pengetahuan dan keterampilan penunjang untuk
mendemontrasikan kompetensi, diperlukan bukti keterampilan
dan pengetahuan di bidang berikut ini :
1.1 Pengetahuan dasar :
1.1.1 Mengidentifikasi algoritma pemrograman.
1.1.2 Menguasai bahasa pemrograman.
1.2 Keterampilan Dasar.
1.2.1 Mengoperasikan sistem komputer.
1.2.2 Mengoperasikan bahasa pemrograman.
2. Konteks penilaian
Kompetensi harus diujikan di tempat kerja atau di tempat lain secara
praktek dengan kondisi kerja sesuai dengan keadaan normal.
3. Aspek penting penilaian
Aspek yang harus diperhatikan
3.1 Kemampuan membuat algoritma program menggunakan array dan
pointer.
3.2 Kemampuan mengidentifikasi penerapan list berkait sesuai dengan
model yang akan direalisasikan (queue, stack, graph, tree atau hash
table).
3.3 Kemampuan mengidentifikasi pengoperasian file dengan menerapkan
model list berkait.
4. Kaitan dengan unit-unit lainnya
4.1 Unit ini didukung oleh pengetahuan dan keterampilan dalam unit-unit
kompetensi yang berkaitan dengan dasar-dasar teknologi informasi:
4.1.1 TIK.OP02.003.01 Mengoperasikan Sistem Operasi
Judul Modul: Membuat Struktur Data Halaman: 15 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
18. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.1.2 TIK.OP02.001.01 Mengoperasikan komputer personal yang
berdiri sendiri (PC stand alone)
4.1.3 TIK.PR02.001.01 Membuat algoritma pemrograman Dasar.
4.1.4 TIK.PR02.002.01 Membuat algoritma pemrograman lanjut
4.1.5 TIK.PR02.008.01 Mengoperasikan pemrograman
terstruktur.
4.2 Pengembangan pelatihan untuk memenuhi persyaratan dalam unit ini
perlu dilakukan dengan hati-hati. Untuk pelatihan pra kejuruan umum,
institusi harus menyediakan pelatihan yang mempertimbangkan
serangkaian konteks industri seutuhnya tanpa bias terhadap sektor
tertentu. Batasan variabel akan membantu dalam hal ini. Untuk sektor
tertentu/khusus, pelatihan harus disesuaikan untuk memenuhi
kebutuhan sektor tersebut.
2.3.7 KOMPETENSI KUNCI
NO KOMPETENSI KUNCI DALAM UNIT INI TINGKAT
1 Mengumpulkan, mengorganisir dan menganalisa informasi 2
2 Mengkomunikasikan ide-ide dan informasi 2
3 Merencanakan dan mengorganisir aktifitas-aktifitas 2
4 Bekerja dengan orang lain dan kelompok 1
5 Menggunakan ide-ide dan teknik matematika 2
6 Memecahkan masalah 3
7 Menggunakan teknologi 2
BAB III
STRATEGI DAN METODE PELATIHAN
3.1. Strategi Pelatihan
Belajar dalam suatu sistem Berdasarkan Kompetensi berbeda dengan yang
sedang “diajarkan” di kelas oleh Pelatih. Pada sistem ini Anda akan bertanggung
jawab terhadap belajar Anda sendiri, artinya bahwa Anda perlu merencanakan
Judul Modul: Membuat Struktur Data Halaman: 16 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
19. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
belajar Anda dengan Pelatih dan kemudian melaksanakannya dengan tekun
sesuai dengan rencana yang telah dibuat.
Persiapan/perencanaan
a. Membaca bahan/materi yang telah diidentifikasi dalam setiap tahap belajar
dengan tujuan mendapatkan tinjauan umum mengenai isi proses belajar Anda.
b. Membuat catatan terhadap apa yang telah dibaca.
c. Memikirkan bagaimana pengetahuan baru yang diperoleh berhubungan dengan
pengetahuan dan pengalaman yang telah Anda miliki.
d. Merencanakan aplikasi praktik pengetahuan dan keterampilan Anda.
Permulaan dari proses pembelajaran
a. Mencoba mengerjakan seluruh pertanyaan dan tugas praktik yang terdapat pada
tahap belajar.
b. Merevisi dan meninjau materi belajar agar dapat menggabungkan pengetahuan
Anda.
Pengamatan terhadap tugas praktik
a. Mengamati keterampilan praktik yang didemonstrasikan oleh Pelatih atau orang
yang telah berpengalaman lainnya.
b. Mengajukan pertanyaan kepada Pelatih tentang konsep sulit yang Anda temukan.
Implementasi
a. Menerapkan pelatihan kerja yang aman.
b. Mengamati indikator kemajuan personal melalui kegiatan praktik.
c. Mempraktikkan keterampilan baru yang telah Anda peroleh.
Penilaian
Melaksanakan tugas penilaian untuk penyelesaian belajar Anda.
Judul Modul: Membuat Struktur Data Halaman: 17 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
20. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
3.2. Metode Pelatihan
Terdapat tiga prinsip metode belajar yang dapat digunakan. Dalam beberapa
kasus, kombinasi metode belajar mungkin dapat digunakan.
Belajar secara mandiri
Belajar secara mandiri membolehkan Anda untuk belajar secara individual, sesuai
dengan kecepatan belajarnya masing-masing. Meskipun proses belajar
dilaksanakan secara bebas, Anda disarankan untuk menemui Pelatih setiap saat
untuk mengkonfirmasikan kemajuan dan mengatasi kesulitan belajar.
Belajar Berkelompok
Belajar berkelompok memungkinkan peserta untuk dating bersama secara teratur
dan berpartisipasi dalam sesi belajar berkelompok. Walaupun proses belajar
memiliki prinsip sesuai dengan kecepatan belajar masing-masing, sesi kelompok
memberikan interaksi antar peserta, Pelatih dan pakar/ahli dari tempat kerja.
Belajar terstruktur
Belajar terstruktur meliputi sesi pertemuan kelas secara formal yang dilaksanakan
oleh Pelatih atau ahli lainnya. Sesi belajar ini umumnya mencakup topik tertentu.
BAB IV
MATERI UNIT KOMPETENSI
MEMBUAT STRUKTUR DATA
Tujuan Instruksional Umum
Judul Modul: Membuat Struktur Data Halaman: 18 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
21. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
• Siswa mampu membuat struktur data pada setiap pemrograman yang diperlukan.
• Siswa mampu membuat algoritma pemrograman sesuai kebutuhan.
Tujuan Instruksional Khusus
• Siswa mampu mengenal berbagai tipe data yang ada.
• Siswa mampu membuat algoritma program dengan tipe data array dan pointer.
• Siswa mampu mengetahui pemakaian array dan pointer.
• Siswa mampu membuat algoritma berupa searching dan sorting.
• Siswa mampu membuat record dengan benar.
• Siswa mampu membuat algoritma dengan manipulasi data.
• Siswa dapat mengetahui berbagai macam Linked-List.
• Siswa mampu membuat algoritma dengan bermacam-macam Linked-List.
• Siswa mampu membuat algoritma pencarian file atau database.
Judul Modul: Membuat Struktur Data Halaman: 19 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
22. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.1 Pengertian Algoritma
Asal usul kata algoritma ?
Kata algoritma berasal dari kata-kata dibawah ini:
Al Khuwarizmi -> algorism -> algorithm (diserap dalam bahasa Indonesia menjadi
algoritma).
Abu Ja’far Muhammad Ibnu Musa Al Khuwarizmi adalah seorang penulis buku Arab
dari Persia yang berjudul Kitab Al Jabar Wal Muqabala (Buku Pemugaran dan
Pengurangan) sekitar tahun 825 M. Kata Al Khuwarizmi dibaca orang Barat
menjadi algorism.
Kata algorism berarti proses menghitung dengan angka Arab [1]. Seseorang
dikatakan algorist jika orang tersebut menggunakan angka Arab. Kata algorism
lambat laun menjadi algorithm disebabkan kata algorism sering dikelirukan dengan
kata arithmetic sehingga akhiran –sm berubah menjadi –thm. Kata algorithm
diserap ke dalam bahasa Indonesia menjadi algoritma.
Apa yang dimaksud dengan Algoritma ?
Algoritma merupakan pola pikir yang terstruktur yang berisi tahap-tahap
penyelesaian suatu masalah secara logis, yang nantinya akan diimplementasikan
ke dalam suatu bahasa pemrograman.
Kata logis disini benar sesuai dengan logika manusia. Untuk menjadi sebuah
algoritma, urutan langkah yang ditempuh untuk menyelesaikan masalah harus
memberikan hasil yang benar.
4.2 Perbedaan antara Tipe Data, Obyek Data dan Struktur Data
Tipe data adalah jenis data yang ditangani oleh suatu bahasa pemrograman pada
komputer.
Tiap-tiap bahasa pemrograman memiliki tipe data yang memungkinkan:
• Deklarasi terhadap variabel tipe data tersebut.
Judul Modul: Membuat Struktur Data Halaman: 20 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
23. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
• Menyediakan kumpulan operasi yang mungkin terhadap variabel bertipe data
tersebut.
• Contoh: tipe data di C? Java? Pascal? .NET?
Obyek Data adalah kumpulan elemen yang mungkin untuk suatu tipe data
tertentu.
• Mis: Integer mengacu pada obyek data -32768 s/d 32767, byte 0 s/d 255,
string adalah kumpulan karakter maks 225 huruf.
Struktur Data adalah cara penyimpanan dan pengorganisasian data-data pada
memori komputer maupun file pada media penyimpanan secara efektif sehingga
dapat digunakan secara efisien, termasuk operasi-operasi didalamnya.
Di dalam struktur data kita berhubungan dengan 2 aktivitas:
- Mendeskripsikan kumpulan obyek data yang sah sesuai dengan tipe data yang
ada.
- Menunjukkan mekanisme kerja operasi-operasinya.
Contoh: integer (-32768 s/d 32767) dan jenis operasi yang diperbolehkan
adalah +, -, *, /, mod, ceil, floor, <, >, !=, dsb.
Struktur data = obyek data + [operasi manipulasi]
Dengan pemilihan struktur data yang baik, maka problem yang kompleks dapat
diselesaikan dengan algoritma yang dapat digunakan secara efisien, operasi-
operasi penting dapat dieksekusi dengan sumber daya yang lebih kecil, memori
lebih kecil, dan waktu eksekusi yang lebih cepat.
Ciri algoritma yang baik menurut Donald E. Knuth:
o Input: ada minimal 0 input atau lebih.
o Output: ada minimal 1 output atau lebih.
o Definite: ada kejelasan apa yang dilakukan.
o Efective: langkah yang dikerjakan harus efektif.
o Terminate: langkah harus dapat berhenti (stop) secara jelas.
Judul Modul: Membuat Struktur Data Halaman: 21 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
24. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.2.1 ADT (Abstract Data Type) atau Tipe Data Bentukan
Bahasa Pemrograman bisa memiliki tipe data:
o Built-in : Sudah tersedia oleh bahasa pemrograman tersebut. Tidak
berorientasi pada persoalan yang dihadapi.
o UDT : User Defined Type, dibuat oleh pemrogram. UDT mendekati
penyelesaian persoalan yang dihadapi. Contoh: record pada Pascal, struct
pada C, class pada Java.
o ADT : Abstract Data Type, memperluas konsep UDT dengan menambahkan
pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-operasi yang
bisa dilakukan terhadap kelas tersebut. Contoh: class pada Java. ADT
adalah kumpulan dari elemen-elemen data yang disajikan dengan satu set
operasi yang digambarkan pada elemen-elemen data tersebut. Stacks,
queues, pohon biner adalah tiga contoh dari ADT.
Bahasa C memiliki tipe data numerik dan karakter (seperti int, float, char, dan lain-
lain). Disamping itu juga memiliki tipe data enumerasi dan structure. Bagaimana
jika kita ingin membuat tipe data baru? Untuk pembuatan tipe data baru
digunakan keyword typedef.
Bentuk umum:
typedef <tipe_data_lama> <ama_tipe_data_baru>
Contoh:
#include <stdio.h>
#include <conio.h>
typedef int angka;
typedef float pecahan;
typedef char huruf;
void main() {
Judul Modul: Membuat Struktur Data Halaman: 22 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
25. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
clrscr();
angka umur;
pecahan pecah;
huruf h;
huruf nama[10];
printf(“masukkan umur anda : ”);scanf(“%d”,&umur);
printf(“Umur anda adalah %d”,umur);
printf(“nmasukkan bilangan pecahan : ”);
scanf(“%f”,&pecah);
printf(“Bilangan pecahan %f”,pecah);
printf(“nmasukkan huruf : ”);h = getche();
printf(“nHuruf anda %c”,h);
printf(“nmasukkan nama : ”);scanf(“%s”,nama);
printf(“Nama anda %s”,nama);
getch();
}
Judul Modul: Membuat Struktur Data Halaman: 23 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
26. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.3 Array
4.3.1 Apakah itu Array ?
Array adalah suatu tipe data terstruktur yang berupa sejumlah data sejenis
(bertipe data sama) yang jumlahnya bisa statis ataupun dinamis dan diberi suatu
nama tertentu. Antara satu variabel dengan variabel lain di dalam array dibedakan
berdasarkan subscript. Sebuah subscript berupa bilangan di dalam kurung siku.
Melalui subscript inilah masing-masing elemen array dapat diakses. Subscript dari
array selalu dimulai dari nol. Subscript terkadang disebut sebagai indeks array.
Elemen-elemen array tersusun secara berderet dan sekuensial didalam memori
sehingga memiliki alamat yang bersebelahan/berdampingan.
Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen
array bertipe data sama tapi bisa bernilai sama atau berbeda-beda.
4.3.2 Pengaksesan Elemen Array
Setelah suatu array didefinisikan, elemen array dapat diakses dengan bentuk:
nama_array[subscript]
o Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks
tertentu
o Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan
indeks tertentu secara langsung.
Judul Modul: Membuat Struktur Data Halaman: 24 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
27. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
o Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan
mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.
o Dalam C, tidak terdapat error handling terhadap batasan nilai indeks, apakah
indeks tersebut berada di dalam indeks array yang sudah didefinisikan atau
belum. Hal ini merupakan tanggung jawab programmer. Sehingga jika
programmer mengakses indeks yang salah, maka nilai yang dihasilkan akan
berbeda atau rusak karena mengakses alamat memori yang tidak sesuai.
4.3.3 Deklarasi Array 1 Dimensi
tipe_data nama_var_array[ukuran];
tipe_data : menyatakan jenis tipe data elemen larik (int, char, float, dll)
nama_var_array : menyatakan nama variabel yang dipakai.
ukuran : menunjukkan jumlah maksimal elemen larik.
Contoh:
char huruf[9];
int umur[10];
int kondisi[2] = {0,1}
int arr_dinamis[] = {1,2,3}
char huruf[9]: berarti akan memesan tempat di memori komputer sebanyak 9
tempat dengan indeks dari 0-8, dimana semua elemennya
bertipe data karakter semuanya. Kalau satu karakter berukuran
1 byte, berarti membutuhkan memori sebesar 9 byte.
int umur[10]: berarti akan memesan tempat di memori komputer sebanyak
10 tempat dengan indeks dari 0-9, dimana semua elemennya
bertipe data integer semuanya. Kalau satu integer berukuran 4
bytes, berarti membutuhkan memori sebesar 4 x 10 = 20
bytes.
Judul Modul: Membuat Struktur Data Halaman: 25 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
28. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
int kondisi[2]: berarti akan memesan tempat di memori komputer sebanyak 2
tempat dengan indeks 0-1, dimana semua elemennya bertipe
data integer semuanya. Dan pada contoh di atas isi elemen-
elemennya yang sebanyak 2 buah diisi sekaligus (diinisialisasi)
yaitu pada elemen kondisi[0] bernilai 0, dan elemen kondisi[1]
bernilai 1.
int arr_dinamis[]:berarti mendeklarasikan array dengan ukuran maksimum array
tidak diketahui, namun ukuran tersebut diketahui berdasarkan
inisialisasi yaitu sebanyak 3 elemen, yang isinya 1,2, dan 3.
4.3.4 Penjelasan Array 1 Dimensi
o Tanda [] disebut juga “elemen yang ke- ... Misalnya kondisi[0] berarti elemen
yang ke nol.
o Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya, bisa
saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun
pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di
memori tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan
terpesan dan dibiarkan kosong.
4.3.5 Deklarasi Array 2 Dimensi
C++ menyediakan array berdimensi dua. Array ini dapat digunakan untuk
berbagai keperluan.
Sebagai gambaran, data kelulusan dari jurusan Teknik Informatika, Manajemen
Informatika dan Teknik Komputer pada suatu Sekolah Tinggi Komputer dari tahun
2002 hingga 2005 dapat dinyatakan dengan array berdimensi dua.
Jurusan 2002 2003 2004 2005
Teknik Informatika 35 45 80 120
Manajemen Informatika 100 110 70 101
Teknik Komputer 10 15 20 17
Judul Modul: Membuat Struktur Data Halaman: 26 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
29. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Tabel diatas dapat didefinisikan ke dalam array berdimensi dua. Pendefinisiannya:
int data_lulus[3][4];
Penjelasan:
- 3 menyatakan jumlah baris (mewakili jurusan).
- 4 menyatakan jumlah kolom (mewakili tahun kelulusan).
Contoh 1 (variabel array dan variabel biasa)
//Dengan variabel biasa:
int x1=3,x2=5,x3=2,x4=7,x5=9;
//Dengan larik:
int x[5]={3,5,2,7,9};
Bagaimana jika kita ingin menghitung total dari variabel biasa?
total = x1 + x2 + x3 + x4 + x5;
Contoh 2 (menginputkan dan menampilkan array)
#include <stdio.h>
#include <conio.h>
void main()
{ int nilai[5], x;
clrscr();
printf(“Memasukkan nilai :n”);
for(x=0;x<5;x++)
{
printf(“Nilai Angka : “); scanf(“%d”,&nilai[x]);
}
printf(“n”);
Judul Modul: Membuat Struktur Data Halaman: 27 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
30. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
printf(“Membaca nilai :n”);
for(x=0;x<5;x++)
{
printf(“Nilai Angka : %d“,nilai[x]);
}
getch();
}
Hasilnya:
Contoh 3 (manipulasi array 1 dimensi)
#include <stdio.h>
#include <conio.h>
int main(){
int bil[7],i;
printf("elemen 1 ? ");scanf("%d",&bil[0]);
bil[1] = 5;
bil[2] = bil[1] + 20;
Judul Modul: Membuat Struktur Data Halaman: 28 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
31. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
for(i=4;i<7;i++) bil[i] = i*10;
bil[3] = bil[bil[1]];
for(i=0;i<7;i++) printf("bil[%d] = %d dan alamatnya:
%Xn",i,bil[i],&bil[i]);
getch();
return 0;
}
Hasilnya:
Terlihat bahwa alamat array berurutan dengan jarak antar alamat adalah 4 bytes
(integer berukuran 4 bytes).
Contoh 4 (tanpa inisialisasi langsung ditampilkan)
#include <stdio.h>
#include <conio.h>
int main(){
int bil[7]; //tanpa inisialisasi
for(int i=0;i<7;i++){
printf("Elemen ke-%i = %dn",i,bil[i]);
}
Judul Modul: Membuat Struktur Data Halaman: 29 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
32. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
getch();
return 0;
}
Hasilnya:
Contoh 5 (karakter yang tidak diinisialisasi)
#include <stdio.h>
#include <conio.h>
int main(){
char h[5];
for(int i=0;i<5;i++){
printf("Elemen ke-%i = %cn",i,h[i]);
}
getch();
return 0;
}
Judul Modul: Membuat Struktur Data Halaman: 30 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
33. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Hasilnya:
4.4 Searching
4.4.1 Pengertian Searching
Searching adalah pencarian data dengan menelusuri tempat pencarian data
tersebut. Tempat pencarian data tersebut dapat berupa array dalam memori, bias
juga pada file pada external storage. Pada suatu data seringkali dibutuhkan
pembacaan kembali informasi (retrieval information) dengan cara searching.
4.4.2 Teknik-teknik Searching
o Sequential Search adalah suatu teknik pencarian data dalam array (1
dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai
akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Kemungkinan
terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan
(elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data
sangat sebentar (minimal).
Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di
indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan
untuk pencarian data sangat lama (maksimal).
Judul Modul: Membuat Struktur Data Halaman: 31 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
34. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Misalnya terdapat array satu dimensi sebagai berikut:
Kemudian program akan meminta data yang akan dicari, misalnya 6. Jika ada
maka akan ditampilkan tulisan “ADA”, sedangkan jika tidak ada
maka akan ditampilkan tulisan “TIDAK ADA”.
#include <stdio.h>
#include <conio.h>
void main(){
clrscr();
int data[8] = {8,10,6,-2,11,7,1,100};
int cari;
int flag=0;
printf("masukkan data yang ingin dicari = ");scanf("%d",&cari);
for(int i=0;i<8;i++){
if(data[i] == cari) flag=1;
}
if(flag==1) printf("Data ada!n");
else printf("Data tidak ada!n");
Judul Modul: Membuat Struktur Data Halaman: 32 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
35. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
- Dari program diatas, terlihat bahwa dilakukan perulangan untuk mengakses
semua elemen array data satu persatu berdasarkan indeksnya.
- Program menggunakan sebuah variabel flag berguna untuk menandai ada
atau tidaknya data yang dicari dalam array data. Hanya bernilai 0 atau 1.
- Flag pertama kali diinisialiasasi dengan nilai 0.
- Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan
tetap bernilai 0.
- Semua elemen array data akan dibandingkan satu persatu dengan data yang
dicari dan diinputkan oleh user.
o Binary Search adalah teknik pencarian data dalam dengan cara membagi
data menjadi dua bagian setiap kali terjadi proses pengurutan. Data yang ada
harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang
dijadikan kunci pencarian.
Prinsip pencarian biner adalah:
- Data diambil dari posisi 1 sampai posisi akhir N
- Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) /
2
- Kemudian data yang dicari dibandingkan dengan data yang ditengah, apakah
sama atau lebih kecil, atau lebih besar?
- Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi
tengah + 1
- Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi
tengah – 1
- Jika data sama, berarti ketemu.
Judul Modul: Membuat Struktur Data Halaman: 33 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
36. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
o Interpolation Search, teknik ini dilakukan pada data yang sudah terurut
berdasarkan kunci tertentu. Teknik searching ini dilakukan dengan perkiraan
letak data.
Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku telepon,
misal yang berawalan dengan huruf T, maka kita tidak akan mencarinya dari
awal buku, tapi kita langsung membukanya pada 2/3 atau ¾ dari tebal buku.
Jadi kita mencari data secara relatif terhadap jumlah data.
Rumus posisi relatif kunci pencarian dihitung dengan rumus:
4.5 Sorting
Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah
disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut
aturan tertentu.Pengurutan data dalam struktur data sangat penting untuk data
yang bertipe data numerik ataupun karakter. Pengurutan dapat dilakukan secara
ascending dan descending.
METODE PENGURUTAN DATA:
• Pengurutan berdasarkan perbandingan (comparison-based sorting)
• Bubble sort, exchange sort
• Pengurutan berdasarkan prioritas (priority queue sorting method)
• Selection sort, heap sort
• Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep
sorted method)
• Insertion sort, tree sort
• Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer
method)
• Quick sort, merge sort
Judul Modul: Membuat Struktur Data Halaman: 34 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
37. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
• Pengurutan berkurang menurun (diminishing increment sort method)
• Shell sort
4.5.1 Bubble Sort
Buble Sort merupakan metode sorting termudah. Diberi nama “Bubble” karena
proses pengurutan secara berangsur-angsur bergerak / berpindah ke posisinya
yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort
mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen
berikutnya. Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan
ke kiri atau kiri ke kanan, tergantung jenis pengurutannya.
Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses,
demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan
tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah
diinginkan.
Contoh prosedur:
Versi 1
void bubble_sort(){
for(int i=1;i<n;i++){
for(int j=n-1;j>=i;j--){
if(data[j]<data[j-1])
tukar(&data[j],&data[j-1]); //ascending
}
}
}
Versi 2
void bubblesort2(){
for(i=1;i<6;i++){
Judul Modul: Membuat Struktur Data Halaman: 35 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
38. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
for(int j=0;j<6-i;j++){
if(data[j]>data[j+1])
tukar(&data[j],&data[j+1]); //descending
}
}
}
“The bubble sort is an easy algorithm to program, but it is slower than many other
sorts”
4.5.2 Selection Sort
Merupakan kombinasi antara sorting dan searching. Untuk setiap proses, akan
dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau
terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk
putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan
ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data
kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]).
Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks
pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Contoh prosedur:
void selection_sort(){
for(int i=0;i<n-1;i++){
pos = i;
for(int j=i+1;j<n;j++){
if(data[j] < data[pos]) pos = j; //ascending
}
if(pos != i) tukar(pos,i);
}
}
Judul Modul: Membuat Struktur Data Halaman: 36 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
39. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.5.3 Insertion Sort
Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil
dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data
ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan
ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka
elemen-elemen lain akan bergeser ke belakang.
Contoh prosedur:
void insertion_sort(){
int temp;
for(int i=1;i<n;i++){
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
4.5.4 Tabel Perbandingan Kecepatan Metode Pengurutan Data
Untuk data sejumlah 10.000 data pada komputer Pentium II 450 MHz
Metode Waktu (detik)
Data Acak Data Ascending Data Descending
Bubble Sort 11,2 1,32 19,77
Insertion Sort 11,09 0,00 2,25
Selection Sort 1,32 1,32 19,77
4.6 Pointer
Judul Modul: Membuat Struktur Data Halaman: 37 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
40. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4.6.1 Apa itu Pointer ?
Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu
lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu
alamat memori. Lokasi memori tersebut bisa diwakili sebuah variabel atau juga
berupa alamat memori secara langsung.
Ilustrasi:
- Kita memiliki variabel X yang berisi nilai karakter ‘a’
- Oleh kompiler C, nilai ‘a’ ini akan disimpan di suatu alamat tertentu di memori.
- Nilai alamat variabel X dapat diakses dengan menggunakan statement &X.
- Jika kita ingin menyimpan alamat dari variabel X ini, kita dapat menggunakan
suatu variabel, misalnya alamat_x = &X;
- alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu ‘a’
disimpan. alamat_x disebut variabel pointer atau sering disebut pointer saja.
Contoh:
#include <stdio.h>
void main(){
char *alamat_x; //menyiapkan variabel alamat_x bertipe
//pointer to char
char X; //menyiapkan variabel X bertipe karakter
X = ‘a’; //mengisi variabel X dengan nilai ‘a’
alamat_x = &X; //mengisi variabel alamat_x dengan alamat X
printf(“Nilai variabel X, yaitu %c, disimpan pada alamat
%p”,X,alamat_x);
}
Hasilnya:
Judul Modul: Membuat Struktur Data Halaman: 38 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
41. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Pointer VS Variabel Biasa
Variabel Biasa Pointer
Berisi data/nilai Berisi alamat memori dari suatu variable
tertentu
Operasi yang bisa dilakukan seperti Membutuhkan operator khusus: “&” yang
layaknya operasi biasa: +, -, *, / menunjuk alamat dari suatu variable
tertentu. Operator “&” hanya dapat
dilakukan kepada variabel dan akan
mengahasilkan alamat dari variabel itu.
Contoh: p = &n
Yang kedua : Operator “*”. Operator ini
bersifat menggunakan nilai dari alamat
variabel yang ditunjuk oleh pointer
tersebut.
Contoh: int *p;
Bersifat statis Bersifat dinamis
Deklarasi : int a; Deklarasi : int *a;
Terdapat 2 buah operator pointer, yaitu:
Operator * Mendapatkan Contoh: Hasil:
nilai data dari int *alamat; 10
variabel pointer int nilai = 10;
alamat = &nilai;
printf(“%d”,*alamat);
Operator & Mendapatkan Contoh: Hasil:
alamat memori int *alamat; FFCCDD
Judul Modul: Membuat Struktur Data Halaman: 39 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
42. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
dari variabel int nilai = 10;
pointer alamat = &nilai;
printf(“%p”,alamat);
4.6.2 Deklarasi Pointer
Pointer dideklarasikan dengan cara:
Tipe_data *nama_variabel_pointer;
Variabel pointer dapat dideklarasikan dengan tipe data apapun. Pendeklarasian
variabel pointer dengan tipe data tertentu digunakan untuk menyimpan alamat
memori tertentu, bukan untuk berisi nilai tertentu. Misalnya jika suatu variabel
pointer dideklarasikan dengan tipe float, berarti variabel pointer tersebut hanya bisa
digunakan untuk menunjuk alamat memori yang berisi nilai bertipe float.
4.6.3 Operasi Pada Pointer
Operasi yang bisa dilakukan oleh variabel pointer adalah:
o Operasi pemberian nilai.
Antar variabel pointer dapat dilakukan operasi pemberian nilai.
Contoh 1:
Pemberian nilai, sebuah alamat dapat ditunjuk oleh lebih dari satu pointer.
#include <stdio.h>
void main(){
float y,*x1,*x2;
y = 12.34;
x1 = &y;
x2 = x1; //operasi pemberian nilai
printf("nilai y pada x1 adalah %2.2f di alamat
%pn",y,x1);
Judul Modul: Membuat Struktur Data Halaman: 40 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
43. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
printf("nilai y pada x2 adalah %2.2f di alamat
%pn",*x2,x2);
}
Hasil:
Contoh 2:
Mengisi variabel dengan nilai yang ditunjuk oleh sebuah variabel pointer.
#include <stdio.h>
void main(){
int *p,a=25,b;
p = &a;
b = *p;
printf("nilai a = %d di alamat %pn",a,p);
printf("nilai b = %d di alamat %pn",b,p);
}
Hasil:
Contoh 3:
Mengoperasikan isi variabel dengan menyebut alamatnya dengan pointer.
#include <stdio.h>
Judul Modul: Membuat Struktur Data Halaman: 41 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
44. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
void main(){
int a=25,b=12;
int *p,*q;
p = &a;
q = &b;
printf("nilai yang ditunjuk p = %d di alamat
%pn",*p,p);
printf("nilai yang ditunjuk q = %d di alamat
%pn",*q,q);
*q = *p;
printf("nilai yang ditunjuk p = %d di alamat
%pn",*p,p);
printf("nilai yang ditunjuk q = %d di alamat
%pn",*q,q);
}
Hasil:
Contoh 4:
Mengisi dan mengganti variabel yang ditunjuk oleh pointer.
#include <stdio.h>
void main(){
int a,*p;
Judul Modul: Membuat Struktur Data Halaman: 42 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
45. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
p=&a;
*p=25;
printf("nilai a = %d",a);
}
Hasil:
o Operasi aritmatika
Variabel pointer dapat dilakukan operasi aritmatika yang akan menunjuk suatu
alamat memori baru.
Contoh1:
#include <stdio.h>
void main(){
char S[] = "anton";
char *p;
//cara 1
p=S; //menunjuk alamat dari karakter pertama.
//cara 2
//p=&S[0]; //sama, menunjuk alamat dari karakter
pertama
for(int i=0;i<5;i++){
printf("%c",*p);
p++;
}
Judul Modul: Membuat Struktur Data Halaman: 43 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
46. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
}
Hasil:
4.6.4 Pointer pada Array 1 dan 2 dimensi
Pada array, pointer hanya perlu menunjuk pada alamat elemen pertama saja
karena letak alamat array sudah berurutan pada memori.
Contoh:
#include <stdio.h>
void main(){
int a[5] = {1,2,3,4,5};
int *p;
p=a;
printf("%d",*p);
}
Hasil : 1
Penjelasan:
- Pernyataan p=a artinya pointer p menyimpan alamat array a, yang alamatnya
diwakili alamat elemen pertama, yaitu a[0]
- Kita juga dapat menuliskan baris p=a diganti dengan p=&a[0]
Contoh pembacaan semua elemen array 1 dimensi dengan pointer:
#include <stdio.h>
void main(){
Judul Modul: Membuat Struktur Data Halaman: 44 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
47. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
int a[5] = {1,2,3,4,5};
int *p;
p=a;
for(int i=0;i<5;i++){
printf("%d ",*p);
p++;
}
}
Hasil: 1 2 3 4 5
Pengisian array 1 dimensi:
#include <stdio.h>
void main(){
int a[5];
int *p;
int i;
p=a;
for(i=1;i<=5;i++){
*p=i;
p++;
}
for(i=0;i<5;i++) printf(“%d “,a[i]);
}
Hasil: 1 2 3 4 5
Pengaksesan array 2 dimensi:
#include <stdio.h>
void main(){
Judul Modul: Membuat Struktur Data Halaman: 45 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
48. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
char a[3][5] = { "ABCDE","FGHIJ","KLMNO" };
char *p;
p=&a[0][0];
for(int i=1;i<=3;i++){
for(int j=1;j<=5;j++){
printf("%c",*p);
p++;
}
printf("n");
}
}
Hasil:
ABCDE
FGHIJ
KLMNO
4.7 Linked List
4.7.1 Apa itu Linked List ?
Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di
RAND Corporation sebagai struktur data utama untuk bahasa Information
Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial
intelligence, seperti pembuatan Chess Solver. Victor Yngve di Massachusetts
Institute of Technology (MIT) juga menggunakan linked-List pada natural language
processing dan machine transitions pada bahasa pemrograman COMMIT.
Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node)
yang tersusun secara sekuensial, saling sambung menyambung, dinamis dan
terbatas. Linked List sering disebut juga Senarai Berantai. Linked List saling
terhubung dengan bantuan variabel pointer. Masing-masing data dalam Linked List
Judul Modul: Membuat Struktur Data Halaman: 46 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
49. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan
biasanya berupa struct yang terdiri dari beberapa field.
Linked list merupakan struktur dinamis yang berlawanan dengan array, dimana
merupakan struktur statis. Hal ini berarti linked list dapat tumbuh dan berkurang
dalam ukuran yang bergantung pada kebutuhan user. Linked list digambarkan
sebagai kumpulan dari nodes, Yang masing-masing berisi data dan link atau
pointer ke node berikutnya di dalam list.
Karakteristik Array VS Linked List
ARRAY LINKED LIST
Statis Dinamis
Penambahan / penghapusan data Penambahan / penghapusan data
Terbatas tidak terbatas
Random access Sequential access
Penghapusan array tidak mungkin Penghapusan linked list mudah
4.7.2 Single Linked List Non Circular
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Ilustrasi Linked List
Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node
terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti
pada saat pembacaan isi linked list.
PEMBUATAN SINGLE LINKED LIST
Judul Modul: Membuat Struktur Data Halaman: 47 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
50. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
typedef struct TNode{
int data;
TNode *next;
};
Penjelasan:
- Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe
integer dan field next yang bertipe pointer dari TNode
- Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode
yang berguna sebagai kepala linked list.
SINGLE LINKED LIST MENGGUNAKAN HEAD
Dibutuhkan satu buah variabel pointer: head. Head akan selalu menunjuk pada
node pertama
Deklarasi Pointer Penunjuk Kepala Single Linked List
Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan
harus menggunakan suatu pointer penunjuk ke node pertama dalam linked list
(dalam hal ini adalah head). Deklarasinya sebagai berikut:
TNode *head;
Judul Modul: Membuat Struktur Data Halaman: 48 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
51. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
PENAMBAHAN DATA
Penambahan node baru akan dikaitkan di node paling depan, namun pada saat
pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara
head ditunjukkan ke node baru tersebut.
Pada prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan
menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data
terdepan.
void insertDepan(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
head->next = NULL;
}
else {
baru->next = head;
head = baru;
}
cout<<”Data masukn”;
}
Ilustrasi:
1. List masih kosong (head=NULL)
2. Masuk data baru, misalnya 5
Judul Modul: Membuat Struktur Data Halaman: 49 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
52. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
3. Kemudian masuk lagi data baru, misalnya 20 (penambahan di depan)
Penambahan data dilakukan di belakang, namun pada saat pertama kali, node
langsung ditunjuk oleh head. Penambahan di belakang lebih sulit karena kita
membutuhkan pointer bantu untuk mengetahui node terbelakang, kemudian
setelah itu, dikaitkan dengan node baru. Untuk mengetahui data terbelakang perlu
digunakan perulangan.
void insertBelakang (int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
head->next = NULL;
}
Judul Modul: Membuat Struktur Data Halaman: 50 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
53. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
else {
bantu=head;
while(bantu->next!=NULL){
bantu=bantu->next;
}
bantu->next = baru;
}
cout<<"Data masukn";
}
Ilustrasi:
1. List masih kosong (head=NULL)
2. Masuk data baru, misalnya 5
3. Kemudian masuk lagi data baru, misalnya 20 (penambahan di belakang)
Judul Modul: Membuat Struktur Data Halaman: 51 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
54. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
4. Datang data baru, misalnya 25 (penambahan di belakang)
Judul Modul: Membuat Struktur Data Halaman: 52 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
55. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
MENAMPILKAN DATA
Function untuk menampilkan isi single linked list non circular
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
cout<<endl;
} else cout<<"Masih kosongn";
}
Function di atas digunakan untuk menampilkan semua isi list, di mana linked list
ditelusuri satu-persatu dari awal node sampai akhir node. Penelusuran ini dilakukan
dengan menggunakan suatu pointer bantu, karena pada prinsipnya pointer head
yang menjadi tanda awal list tidak boleh berubah/berganti posisi. Penelusuran
dilakukan terus sampai node terakhir ditemukan menunjuk ke nilai NULL. Jika tidak
NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi
datanya dengan menggunakan field next sehingga dapat saling berkait. Jika head
masih NULL berarti data masih kosong!
Judul Modul: Membuat Struktur Data Halaman: 53 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
56. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
MENGHAPUS DATA
Function untuk menghapus data terdepan
void hapusDepan (){
TNode *hapus;
int d;
if (isEmpty()==0){
if(head->next != NULL){
hapus = head;
d = hapus->data;
head = head->next;
delete hapus;
} else {
d = head->data;
head = NULL;
}
cout<<d<<" terhapusn";
} else cout<<"Masih kosongn";
}
Function di atas akan menghapus data teratas (pertama) yang ditunjuk oleh head
pada linked list. Penghapusan node tidak boleh dilakukan jika keadaan node sedang
ditunjuk oleh pointer, maka harus dilakukan penggunakan suatu pointer lain yang
Judul Modul: Membuat Struktur Data Halaman: 54 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
57. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
digunakan untuk menunjuk node yang akan dihapus, misalnya pointer hapus dan
barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete.
Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya
terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan
menjadi head baru (data terdepan yang baru). Jika head masih NULL maka berarti
data masih kosong!
Penghapusan data di belakang:
Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk
node yang akan dihapus, dan pointer bantu digunakan untuk menunjuk node
sebelum node yang dihapus yang kemudian selanjutnya akan menjadi node
terakhir. Pointer bantu akan digunakan untuk menunjuk ke nilai NULL. Pointer
bantu akan selalu bergerak sampai sebelum node yang akan dihapus, baru
kemudian pointer hapus diletakkan setelah pointer bantu. Setelah itu pointer hapus
akan dihapus, pointer bantu akan menunjuk ke NULL.
void hapusBelakang(){
TNode *hapus,*bantu;
int d;
if (isEmpty()==0){
if(head->next != NULL){
bantu = head;
while(bantu->next->next!=NULL){
bantu = bantu->next;
}
hapus = bantu->next;
d = hapus->data;
bantu->next = NULL;
delete hapus;
} else {
d = head->data;
Judul Modul: Membuat Struktur Data Halaman: 55 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
58. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
head = NULL;
}
cout<<d<<" terhapusn";
} else cout<<"Masih kosongn";
}
4.7.3 Single Linked List Circular (SLLC)
SLLC adalah Single Linked List yang pointer next-nya menunjuk pada dirinya
sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer
next pada node terakhir akan menunjuk ke node terdepannya.
Judul Modul: Membuat Struktur Data Halaman: 56 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul
59. Materi Pelatihan Berbasis Kompetensi Kode Modul
Sektor Telematika Sub Sektor Programmer Komputer TIK.PR02.003.01
Ilustrasi SLLC
Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node
terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar.
Node terakhir akan menunjuk lagi ke head.
PEMBUATAN SINGLE LINKED LIST CIRCULAR
typedef struct TNode{
int data;
TNode *next;
};
Penjelasan:
- Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe
integer dan field next yang bertipe pointer dari TNode
- Setelah pembuatan struct, buat variabel haed yang bertipe pointer dari TNode
yang berguna sebagai kepala linked list.
SINGLE LINKED LIST CIRCULAR MENGGUNAKAN HEAD
- Dibutuhkan satu buah variabel pointer: head
- Head akan selalu menunjuk pada node pertama
Judul Modul: Membuat Struktur Data Halaman: 57 dari 118
Buku Kerja Versi: 01-09-2007
Materi Pelatihan Berbasis Kompetensi Kode Modul