SlideShare uma empresa Scribd logo
1 de 123
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2
Tik.pr02.003.01 b informasi2

Mais conteúdo relacionado

Mais procurados

Tik.cs02.052.01 buku informasi setting wireless fix
Tik.cs02.052.01 buku informasi setting wireless fixTik.cs02.052.01 buku informasi setting wireless fix
Tik.cs02.052.01 buku informasi setting wireless fixLukmanulhakim Almamalik
 
Buku informasi tik.cs03.015.01 udah revisi
Buku informasi tik.cs03.015.01 udah revisiBuku informasi tik.cs03.015.01 udah revisi
Buku informasi tik.cs03.015.01 udah revisiLukmanulhakim Almamalik
 
Buku informasi tik.cs03.012.01 (autosaved)
Buku informasi tik.cs03.012.01 (autosaved)Buku informasi tik.cs03.012.01 (autosaved)
Buku informasi tik.cs03.012.01 (autosaved)Lukmanulhakim Almamalik
 
Modul 4 Pengolah Kata
Modul 4   Pengolah KataModul 4   Pengolah Kata
Modul 4 Pengolah KataAan Solo
 
Perangkat lunak pengolah kata
Perangkat lunak pengolah kataPerangkat lunak pengolah kata
Perangkat lunak pengolah katalintang Kegelapan
 
25358544 motor-stater
25358544 motor-stater25358544 motor-stater
25358544 motor-stateryepiyes
 
Makalah ii - Giofani - 11150351 - 7c msdm
Makalah ii - Giofani - 11150351 - 7c msdmMakalah ii - Giofani - 11150351 - 7c msdm
Makalah ii - Giofani - 11150351 - 7c msdmGiofanisdg
 

Mais procurados (20)

Buku informasi tik.cs03.016.01
Buku informasi tik.cs03.016.01Buku informasi tik.cs03.016.01
Buku informasi tik.cs03.016.01
 
Tik.cs02.052.01 buku informasi setting wireless fix
Tik.cs02.052.01 buku informasi setting wireless fixTik.cs02.052.01 buku informasi setting wireless fix
Tik.cs02.052.01 buku informasi setting wireless fix
 
Tik.cs02.053.01 buku informasi
Tik.cs02.053.01 buku informasiTik.cs02.053.01 buku informasi
Tik.cs02.053.01 buku informasi
 
Tik.cs03.008.01 buku informasi
Tik.cs03.008.01 buku informasiTik.cs03.008.01 buku informasi
Tik.cs03.008.01 buku informasi
 
Buku informasi tik.cs03.015.01 udah revisi
Buku informasi tik.cs03.015.01 udah revisiBuku informasi tik.cs03.015.01 udah revisi
Buku informasi tik.cs03.015.01 udah revisi
 
Buku informasi tik.cs03.010.01
Buku informasi tik.cs03.010.01Buku informasi tik.cs03.010.01
Buku informasi tik.cs03.010.01
 
Buku informasi tik.cs03.011.01
Buku informasi tik.cs03.011.01Buku informasi tik.cs03.011.01
Buku informasi tik.cs03.011.01
 
Buku informasi tik.cs03.012.01 (autosaved)
Buku informasi tik.cs03.012.01 (autosaved)Buku informasi tik.cs03.012.01 (autosaved)
Buku informasi tik.cs03.012.01 (autosaved)
 
Tik.cs03.007.01 buku informasi
Tik.cs03.007.01 buku informasiTik.cs03.007.01 buku informasi
Tik.cs03.007.01 buku informasi
 
Tik.jk02.007.01 b info
Tik.jk02.007.01 b infoTik.jk02.007.01 b info
Tik.jk02.007.01 b info
 
Tik.cs02.049.01 buku informasi
Tik.cs02.049.01 buku informasiTik.cs02.049.01 buku informasi
Tik.cs02.049.01 buku informasi
 
Tik.jk02.023.01 b informasi fix
Tik.jk02.023.01 b informasi fixTik.jk02.023.01 b informasi fix
Tik.jk02.023.01 b informasi fix
 
Tik.jk02.001 b informasi
Tik.jk02.001 b informasiTik.jk02.001 b informasi
Tik.jk02.001 b informasi
 
Tik.jk01.006.01 b informasi fix
Tik.jk01.006.01 b informasi fixTik.jk01.006.01 b informasi fix
Tik.jk01.006.01 b informasi fix
 
Modul 4 Pengolah Kata
Modul 4   Pengolah KataModul 4   Pengolah Kata
Modul 4 Pengolah Kata
 
Perangkat lunak pengolah kata
Perangkat lunak pengolah kataPerangkat lunak pengolah kata
Perangkat lunak pengolah kata
 
28. teknologi dan informasi
28. teknologi dan informasi28. teknologi dan informasi
28. teknologi dan informasi
 
25358544 motor-stater
25358544 motor-stater25358544 motor-stater
25358544 motor-stater
 
Makalah ii - Giofani - 11150351 - 7c msdm
Makalah ii - Giofani - 11150351 - 7c msdmMakalah ii - Giofani - 11150351 - 7c msdm
Makalah ii - Giofani - 11150351 - 7c msdm
 
MJR PDF SHARE 3
MJR PDF SHARE 3MJR PDF SHARE 3
MJR PDF SHARE 3
 

Semelhante a Tik.pr02.003.01 b informasi2

Pengantar Teknologi Informasi
Pengantar Teknologi InformasiPengantar Teknologi Informasi
Pengantar Teknologi Informasinoviaji wibisono
 
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsPengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsBambang Purnomosidi D. P.
 
Ka 01.-praktikum-algoritma-pemrograman-2
Ka 01.-praktikum-algoritma-pemrograman-2Ka 01.-praktikum-algoritma-pemrograman-2
Ka 01.-praktikum-algoritma-pemrograman-2Ayu Karisma Alfiana
 
Modul 9 Pengelolaan Informasi
Modul 9   Pengelolaan InformasiModul 9   Pengelolaan Informasi
Modul 9 Pengelolaan InformasiAan Solo
 
Modul 5 Lembar Sebar
Modul 5   Lembar SebarModul 5   Lembar Sebar
Modul 5 Lembar SebarAan Solo
 
Psosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemPsosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemHendriyana Jatnika
 
Mi 01.-praktikum-bahasa-pemrograman
Mi 01.-praktikum-bahasa-pemrogramanMi 01.-praktikum-bahasa-pemrograman
Mi 01.-praktikum-bahasa-pemrogramanAyu Karisma Alfiana
 
Modul Jaringan Komputer Dasar 2011-2012
Modul Jaringan Komputer Dasar 2011-2012Modul Jaringan Komputer Dasar 2011-2012
Modul Jaringan Komputer Dasar 2011-2012Mas Tri Sragen
 
Supriyanto s komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...
Supriyanto s   komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...Supriyanto s   komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...
Supriyanto s komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...Kira R. Yamato
 
Modul 2 Mengidentifikasi Komputer
Modul 2   Mengidentifikasi KomputerModul 2   Mengidentifikasi Komputer
Modul 2 Mengidentifikasi KomputerAan Solo
 
Draft urs tms version 1 0 a
Draft urs   tms version 1 0  aDraft urs   tms version 1 0  a
Draft urs tms version 1 0 ad3styakrisna
 
Modul Perangkat Lunak Presentasi
Modul Perangkat Lunak PresentasiModul Perangkat Lunak Presentasi
Modul Perangkat Lunak PresentasiTIKBLKAMBON
 
Membuat Dokumen LaTeX Eleventh Edition
Membuat Dokumen LaTeX  Eleventh EditionMembuat Dokumen LaTeX  Eleventh Edition
Membuat Dokumen LaTeX Eleventh EditionHirwanto Iwan
 
Modul Frais CNC_versi4.0_juli11
Modul Frais CNC_versi4.0_juli11Modul Frais CNC_versi4.0_juli11
Modul Frais CNC_versi4.0_juli11Bernardus Sentot
 
LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud Hirwanto Iwan
 
Modul 5 lembar sebar
Modul 5   lembar sebarModul 5   lembar sebar
Modul 5 lembar sebarDessy Elfiya
 
Buku Ajar Mikrokontroler dan Interface.pdf
Buku Ajar Mikrokontroler dan Interface.pdfBuku Ajar Mikrokontroler dan Interface.pdf
Buku Ajar Mikrokontroler dan Interface.pdfSiswantoSpd
 
melakukan_perawatan_periferal
melakukan_perawatan_periferalmelakukan_perawatan_periferal
melakukan_perawatan_periferalNurdin Al-Azies
 

Semelhante a Tik.pr02.003.01 b informasi2 (20)

Pengantar Teknologi Informasi
Pengantar Teknologi InformasiPengantar Teknologi Informasi
Pengantar Teknologi Informasi
 
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsPengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
 
Ka 01.-praktikum-algoritma-pemrograman-2
Ka 01.-praktikum-algoritma-pemrograman-2Ka 01.-praktikum-algoritma-pemrograman-2
Ka 01.-praktikum-algoritma-pemrograman-2
 
Modul 9 Pengelolaan Informasi
Modul 9   Pengelolaan InformasiModul 9   Pengelolaan Informasi
Modul 9 Pengelolaan Informasi
 
Modul 5 Lembar Sebar
Modul 5   Lembar SebarModul 5   Lembar Sebar
Modul 5 Lembar Sebar
 
Psosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemPsosk 12-supplement file-management_system
Psosk 12-supplement file-management_system
 
Mi 01.-praktikum-bahasa-pemrograman
Mi 01.-praktikum-bahasa-pemrogramanMi 01.-praktikum-bahasa-pemrograman
Mi 01.-praktikum-bahasa-pemrograman
 
Modul Jaringan Komputer Dasar 2011-2012
Modul Jaringan Komputer Dasar 2011-2012Modul Jaringan Komputer Dasar 2011-2012
Modul Jaringan Komputer Dasar 2011-2012
 
Supriyanto s komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...
Supriyanto s   komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...Supriyanto s   komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...
Supriyanto s komputasi untuk sains dan teknik menggunakan matlab edisi 4 - ...
 
Perbaikan
PerbaikanPerbaikan
Perbaikan
 
Tugas UAS Rangkuman Riset Operasi
Tugas UAS Rangkuman Riset Operasi Tugas UAS Rangkuman Riset Operasi
Tugas UAS Rangkuman Riset Operasi
 
Modul 2 Mengidentifikasi Komputer
Modul 2   Mengidentifikasi KomputerModul 2   Mengidentifikasi Komputer
Modul 2 Mengidentifikasi Komputer
 
Draft urs tms version 1 0 a
Draft urs   tms version 1 0  aDraft urs   tms version 1 0  a
Draft urs tms version 1 0 a
 
Modul Perangkat Lunak Presentasi
Modul Perangkat Lunak PresentasiModul Perangkat Lunak Presentasi
Modul Perangkat Lunak Presentasi
 
Membuat Dokumen LaTeX Eleventh Edition
Membuat Dokumen LaTeX  Eleventh EditionMembuat Dokumen LaTeX  Eleventh Edition
Membuat Dokumen LaTeX Eleventh Edition
 
Modul Frais CNC_versi4.0_juli11
Modul Frais CNC_versi4.0_juli11Modul Frais CNC_versi4.0_juli11
Modul Frais CNC_versi4.0_juli11
 
LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud
 
Modul 5 lembar sebar
Modul 5   lembar sebarModul 5   lembar sebar
Modul 5 lembar sebar
 
Buku Ajar Mikrokontroler dan Interface.pdf
Buku Ajar Mikrokontroler dan Interface.pdfBuku Ajar Mikrokontroler dan Interface.pdf
Buku Ajar Mikrokontroler dan Interface.pdf
 
melakukan_perawatan_periferal
melakukan_perawatan_periferalmelakukan_perawatan_periferal
melakukan_perawatan_periferal
 

Mais de Lukmanulhakim Almamalik (20)

Promoting Green Financing Mechanisms.pdf
Promoting Green Financing Mechanisms.pdfPromoting Green Financing Mechanisms.pdf
Promoting Green Financing Mechanisms.pdf
 
UU_Perindustrian_No_3_2014.pdf
UU_Perindustrian_No_3_2014.pdfUU_Perindustrian_No_3_2014.pdf
UU_Perindustrian_No_3_2014.pdf
 
PENGENALAN PEMODELAN SISTEM DINAMIK MENGGUNAKAN VENSIM PLE
PENGENALAN PEMODELAN SISTEM DINAMIK MENGGUNAKAN  VENSIM PLEPENGENALAN PEMODELAN SISTEM DINAMIK MENGGUNAKAN  VENSIM PLE
PENGENALAN PEMODELAN SISTEM DINAMIK MENGGUNAKAN VENSIM PLE
 
Bahan kuliah ttm [compatibility mode]
Bahan kuliah ttm [compatibility mode]Bahan kuliah ttm [compatibility mode]
Bahan kuliah ttm [compatibility mode]
 
Buku systems thinking
Buku systems thinkingBuku systems thinking
Buku systems thinking
 
Ch22
Ch22Ch22
Ch22
 
Ch21
Ch21Ch21
Ch21
 
Ch20
Ch20Ch20
Ch20
 
Ch19
Ch19Ch19
Ch19
 
Ch18
Ch18Ch18
Ch18
 
Ch17
Ch17Ch17
Ch17
 
Ch17
Ch17Ch17
Ch17
 
Ch16
Ch16Ch16
Ch16
 
Ch15
Ch15Ch15
Ch15
 
Ch14
Ch14Ch14
Ch14
 
Ch13
Ch13Ch13
Ch13
 
Ch12
Ch12Ch12
Ch12
 
Ch11
Ch11Ch11
Ch11
 
Ch10
Ch10Ch10
Ch10
 
Ch09
Ch09Ch09
Ch09
 

Tik.pr02.003.01 b informasi2

  • 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