MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

dokumen-dokumen yang mirip
Struktur Data Array. Rijal Fadilah S.Si

Pertemuan 7. REVIEW dan QUIS

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Algoritma Dan Struktur Data II. Queue

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

SINGLE LINKED LIST (NON CIRCULAR)

Algoritma Dan Struktur Data II

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

KONSEP POINTER DAN LINKED LIST

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA

Pendahuluan Struktur Data. Nisa ul Hafidhoh

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

SATUAN ACARA PENGAJARAN

Algoritma dan Struktur Data STACK

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

STRUKTUR DATA Pertemuan 1 s.d 8

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

BAB IX LINKED LIST (SENARAI BERANTAI)

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Larik/ Array int a1, a2, a3, a4, a5;

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

Struktur Data. PDE - Struktur Data 1

Algoritma Pemrograman & Struktur Data

STRUKTUR DATA (2) Single Linked List

Algoritma & Pemrograman #9. by antonius rachmat c, s.kom, m.cs

Algoritma dan Struktur Data. Ramos Somya

BAB II STACK (TUMPUKAN)

S TA C K Sunu Wibirama

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

LAPORAN PRAKTIKUM IX. Oleh:

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Searching [pencarian] Algoritma Pemrograman

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

BAB IX LINKED LIST (SENARAI BERANTAI)

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

Algoritma Dan Struktur Data II

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Operasi File. Chapter 13

Lab. Teknik Informatika Struktur Data 1

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan

LAPORAN PRAKTIKUM RESMI QUEUE

Array (Larik) Modul 7

Struktur Data II. Single Linked List - Non circular

BAB III QUEUE (ANTRIAN)

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

TIF 4201 Algoritma Dan Struktur Data

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Modul 8 SORTING (PENGURUTAN)

Modul Praktikum Algoritma dan Struktur Data

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Algoritma dan Struktur Data. Ramos Somya

Stack. Gambar 1.1 Stack

04. Single Linked List

MODUL IV STACK A. TUJUAN

Pengenalan C++ Oleh : Dewi Sartika

Single Linked List (1)

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

ALGORITMA DAN STRUKTUR DATA

BAB IV Antrian(Queue)

MODUL PRAKTIKUM STRUKTUR DATA

Pengurutan (Sorting) Algoritma Pemrograman

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Algoritma dan Struktur Data

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

BAB VI ARRAY PADA PEMROGRAMAN JAVA

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

KUM 5 IMPLEMENTASI QUEUE

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

Menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan. int nilai[6] = {8,7,5,6,4,3};

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Transkripsi:

MAKALAH STRUKTUR DATA DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH (14.1.03.03.0024) FAKULTAS TEKNIK PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS NUSANTARA PGRI KEDIRI 2016

BAB 1 KONSEP DASAR STRUKTUR DATA Apa itu Struktur Data? Cara menyimpan atau merepresentasikan data didalam komputer agar bisa dipakai secara efesien. Apa Itu Data? Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol. Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efesien dan sederhana. KONSTANTA DAN VARIABEL Jika dalam membuat suatu program, tentu akan sering menggunakan bilangan numerik atau suatu kalimat string yang sama yang akan digunakan berkali-kali, ada baiknya bilangan atau kalimat tersebut dijadikan sebagai suatu konstanta. Manfaat Konstanta : Penggunaan konstanta akan membuat program menjadi lebih mudah dimengerti dan diperbaiki. Penggunaan konstanta akan dapat memberikan nama yang mudah dipahami untuk suatu bilangan numerik yang kompleks. Deklarasi Konstanta Konstanta dideklarasikan pada awal program. Sesuai dengan namanya konstanta, maka nilai dalam konstanta tersebut akan selalu konstan (tetap). Nilai tersebut tidak dapat diganti pada saat program sedang dijalankan. Deklarasi Variabel Variabel adalah sebuah identifier yang nilainya dapat diubah sesuai dengan kebutuhan program. Jika dibutuhkan sebuah variabel yang dapat dikenali oleh semua lingkungan dalam program maka harus digunakan variabel Global.

Pada C++ selalu terdapat fungsi utama, variabel global biasanya dideklarasikan di luar fungsi utama tersebut. Juga terdapat variabel Lokal. Variabel lokal hanya dikenali oleh suatu fungsi saja, artinya variabel lokal tidak dikenal oleh lingkungan luar di dalam program yang dibuat. Variabel lokal harus berada dalam lingkup fungsi tertentu. Tipe Data Di dalam bahasa pemrograman terdapat beberapa tipe data dasar yang telah didefenisikan dan digolongkan : - Tipe bilangan bulat(integer) - Bilangan real(floating point) - Tipe logika(boolean) dan - Tipe karakter/teks(character/string). Pada saat mendeklarasikan sebuah variabel, secara otomatis harus mendeklarasikan tipe data yang dapat ditampung oleh varibel tersebut. BAB 2 ARRAY Konsep Dasar Array Array merupakan tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu array ditunjukkan oleh suatu indek untuk membedakan variabel yang satu dengan variabel lainnya. Setiap data yang terdapat dalam array tersebut menempati alamat memori yang berbeda disebut elemen array. Untuk mengakses nilai dari suatu elemen array, akan digunakan indeks dari array tersebut. Sangat perlu diperhatikan bahwa dalam bahasa C/C++, indeks array selalu dimulai dari angka 0, bukan 1. Hal ini berbeda dengan bahasa pemrograman lainnya (misalnya bahasa Pascal) dimana indeks awal array dapat ditentukan sendiri sesuai dengan keinginan kita. Untuk mendeklarasikan suatu array dalam bahasa C adalah dengan menggunakan tanda [ ] (bracket).

Bentuk Penulisan : tipe_data nama_array [banyak_elemen] ; Contoh Pendeklarasian Array : float Nil_Akhir [6] ; Variabel array dalam bahasa C/C++ dapat digolongkan menjadi tiga dimensi : A. Array Berdimensi Satu Array atau larik adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data pada suatu larik disebut dengan elekmen-elemen larik. Letak urutan dari suatu larik ditunjukkan oleh suatu subscript atau index. Deklarasi array (larik): tipe_data nama_var_array [ukuran]; Keterangan : 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 : Int nilai[6]; Inisialisasi array : Menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan. int nilai[6] = {8,7,5,6,4,3}; bisa disederhanakan sehingga menjadi : int nilai[] = {8,7,5,6,4,3}; Keterangan : Contoh diatas berarti berarti anda memesan tempat di memori komputer sebanyak 6 tempat dengan indeks dari 0-5, dimana indeks ke-0 bernilai 8, ke-1 bernilai 7, dst, dan semua elemennya bertipe data integer. Catatan: Untuk memberikan niai 0 terhadap seluruh elemen array pada saat didefinisikan, Anda dapat memberikan nilai awal 0 pada elemen pertama. Sebagai contoh: Int temp[100] = {0}; Akan memberikan hasil pemberian nilai nol dari subscript bernilai 0 hingga 99.

Mengakses elemen array : nama_var_array [indeks]; Keterangan : Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Contoh : nilai[2]; Suatu array dapat digambarkan sebagai kotak panjang yang berisi kotak-kotak kecil didalam kotak panjang tersebut. Elemen Elemen Elemen Elemen Elemen Elemen 1 2 3 4 5 6 0 1 2 3 4 5 Array Nil_Akhir B. Array Berdimensi Dua Array tidak hanya dapat dibentuk dalam dimensi satu, juga dapat dibentuk dalam dimensi dua. Bentuk penulisan array berdimensi dua adalah sebagai berikut : tipe_data nama_array [elemen_1][elemen_2] = { nilai array }; float nilai[2][5] = {2, 3, 4, 5, 2},{4, 2, 6, 2, 7};

BAB 3 STRUCTURE Struktur merupakan kumpulan elemen data yang digabungkan menjadi satu kesatuan data. Masing-masing elemen data tersebut dinamakan field atau elemen struktur. Field tersebut bisa memiliki tipe data yang ataupun berbeda, meskipun field tersebut dalam satu kesatuan tetapi tetap bisa siakses secara individu. Struktur dan array mempunyai kesamaan dan perbedaan, kesamaannya yaitu alokasi memori untuk elemen-elemennya sudah ditentukan sebelum program dijalankan. Perbedaannya, array adalah struktur data yang tipe data dari elemen-elemennya harus sama dan elemen tersebut diakses melalui indeks sedangkan struktur adalah struktur data yang tipe data dari elemenelemennya tidak harus sama dan elemen tersebut diakses melalui identifier atau nama variabel. Deklarasi struktur struct nama_struktur // nama struktur, kata struct harus ada { type1 element1; type2 element2; anggota / elemen dari struktur type3 element3;.. } nama_object; // identifier yang digunakan untuk pemanggilan struktur ------------atau--------------- struct nama_struktur { type1 element1; type2 element2; type3 element3;.. } ; struct nama_struktur nama_object; Enumerasi Enumerasi adalah tipe data yang mempunyai elemen-elemen bertipe konstnta dengan urutan yang sudah dtentukan. Nilai-nilai dari konstanta ini berupa nilai-nilai integer yang diwakili oleh pengenal yang ditulis di antara tanda kurung kurawal { dan }. Tipe ini dideklarasikan dengan kata kunci enum. Deklarasi Enumerasi : Enum nama_enumerasi{nilai1,nilai2, } Nested structure (Struktur Bersarang) Suatu struktur yang dapat digunakan di dalam struktur yang lainnya.

Structure of Array Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include <stdio.h> typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; void main() { Mahasiswa a,b,c; } artinya struct mahasiswa digunakan untuk 3 variabel, yaitu a,b,c Struct of array #include <stdio.h> typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; void main() { Mahasiswa mhs[3]; } artinya struct mahasiswa digunakan untuk mhs[0], mhs[1], dan mhs[2] BAB 4 POINTER (VAR. PENUNJUK) Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer tertentu. Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C. Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL, dan disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.

Operator Pointer Terdapat dua macam operator pointer, yaitu : 1.Operator Alamat / Deference ( & ). 2.Operator Reference ( * ). 1. Operator Alamat / Dereference Operator(&) Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan. Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan tanda ampersand(&) yang dapat diartikan alamat. Contoh : Bil1 = &Bil2; dibaca: isi variabel bil1 sama dengan alamat bil2 2. Operator Reference (*) Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer. Contoh : Bil1=*Bil2; dibaca: bil1 sama dengan nilai yang ditunjuk oleh bil2. Deklarasi variabel pointer tipe * nama_pointer; Beberapa hal tentang pointer : Operasi variabel pointer dapat dikerjakan oleh variabel pointer yang lain, contoh : X = 10; Ptr1 = &X; Ptr2 = Ptr1; Ptr1 dan Ptr2 menghasilkan alamat variabel X yang sama. OPERASI POINTER 1. Operasi penugasan Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. contoh: y = 35; x1 = &y; x2 = x1; 2. Operasi aritmatika Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan. 3. Operasi Logika Operasi logika juga dapat dilakukan pada sebuah variabel pointer

BAB 5 FUNCTION (FUNGSI) Functin/fungsi adalah bagian dari suatu program yang memiliki nama tertentu yang unik, digunakan untuk suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunkan/memanggil fungsi tersebut. Tipe data sederhana : integer, real, boolean dan string Dalam matematika : f(x,y) = 3x y +xy,f adalah sebuah fungsi dengan parameter x dan y. Nilai yang diberikan fungsi tergantung nilai parameter masukannya. Fungsi diakses dengan memanggil namanya (sama seperti prosedur). Fungsi dapat mengandung parameter formal berjenis parameter masukan.fungsi harus dideklarasikan dengan tipenya atau jenis hasilnya. Fungsi dibagi 2: a. Fungsi tanpa parameter b. Fungsi dengan parameter Dalam pemrograman dikenal tiga jenis parameter yaitu : 1. Parameter masukan, adalah parameter yang digunakan untuk menampung nilai yang akan dijadikan masukan (input) ke dalam suatu fungsi, artinya, sebuah fungsi dapat menghasilkan nilai yang berbeda tergantung dari nilai dalam perameter yang dimasukan pada saat pemanggilan fungsi tersebut. 2. Parameter keluaran, adalah parameter yang digunakan untuk menampung nilai yang akan dijadikan keluaran (output) yang akan dikirimkan ke bagian yang memanggil fungsi tersebut, umumnya parameter ini digunakan untuk fungsi yang tidak memiliki nilai balik (prosedur) 3. Parameter masukan/keluaran, adalah parameter yang digunakan untuk menampung nilai yang akan dijadikan masukan (input) ke dalam suatu fungsi selain itu juga menampung nilai yang akan dijadikan keluaran (output) yang akan dikirimkan ke bagian yang memanggil fungsi tersebut, artinya, sebuah parameter sebelum fungsi dijalankan bertindak sebagai parameter masukan dan setelah fungsi dijalankan parameter tersebut bertindak sebagai parameter keluaran.

BAB 6 SORTING (PENGURUTAN) Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil ke data lebih besar) atau menurun (descending = dari data besar ke data lebih kecil). Banyak sekali algoritma pengurutan yang ada, tetapi disini akan kita pelajari 3 metode yaitu: Bubble sort (gelembung) Selection sort (maksimum/minimun) Insertion sort (sisip) 1. PENGURUTAN GELEMBUNG Metode pengurutan gelembung (bubble sort) diinspirasi oleh gelembung sabun yang ada di permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air maka gelembung sabun akan selalu mengapung. Prinsip pengapungan ini juga dipakai pada pengurutan gelembung. Elemen yang berharga paling kecil diapungkan, artinya diangkat ke atas (atau ke ujung paling kiri) melalui pertukaran. Proses pengapungan ini dilakukan N kali langkah. Pada langkah ke-i, Larik[1..N] akan terdiri dari 2 bagian yaitu: A. Bagian yang sudah terurut yaitu L[1]..L[i]. B. Bagian yang belum terurut L[I+1]..L[n]. ALGORITMA PENGURUTAN GELEMBUNG Untuk mendapatkan larik yan terurut menaik, proses yang harus dilakukan pada setiap langkah sebagai berikut: Langkah 1: Mulai dari elemen K=N,N-1,N-2,..2 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 1, elemen L[1] berisi harga minimum pertama. Langkah 2: Mulai dari elemen K=N,N-1,N-2,..3 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 2, elemen L[2] berisi harga minimum kedua dan L[1]..L[2] terurut.. Langkah 3: Mulai dari elemen K=N,N-1,N-2,..4 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1]. Pada akhir langkah 3, elemen L[3] berisi harga minimum ketiga dan L[1]..L[3] terurut.. Langkah N-1: Mulai dari elemen K=N,N-1,N-2,..4 bandingkan L[K] jika L[K] < L[K-1], pertukarkan L[K] dengan L[K-1].

BAB 7 SEARCHING (PENCARIAN) Ada beberapa pencarian yang akan kita uraikan disini: 1. Pencarian Beruntun (Sekuensial Search) 2. Pencarian Beruntun dengan sentinel 3. Pencarian Bagi dua (Binary Search) Pencarian Beruntun (Sekuensial Search) Konsep : Membandingkan setiap setiap elemen larik satu per satu secara urut (beruntun), mulai dari elemen pertama sampai dengan elemen yang terakhir. Ada 2 macam pencarian beruntun,yaitu pencarian pada array yang sudah terurut, dan pencarian pada array yang belum terurut. Pencarian Beruntun Dengan Sentinel Algoritma ini adalah pengembangan dari algoritma pencarian beruntun. Yang dimaksud dengan sentinel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir dari larik tersebut. Jadi jika elemen terakhir dari larik adalah L[N], maka sentinel diletakkan pada elemen L[N+1]. Akibatnya proses pencarian akan selalu menemukan data yang dicari, akan tetapi harus selalu diperiksa letak data yang ditemukan, apakah: 1. Di antara elemen-elemen larik yang sesungguhnya(antara L[1] sampai dengan L[N]) 2. Pada elemen fiktif [L[N+1]] Pencarian Bagi Dua (Binary Search) Syarat : Data harus terurut Salah satu keuntungan data yang terurut adalah memudahkan pencarian, yang dalam hal ini adalah pencarian bagi dua. Sebenarnya dalam kehidupan sehari-hari kita sering menerapkan algoritma ini. Untuk mencari kata tertentu dalam kamus (misalnya kamus bahasa Inggris), kita tidak membuka kamus tersebut dari halaman awal sampai halaman akhir satu persatu, namun kita mencarinya dengan cara membelah atau membagi halaman-halaman buku tersebut. Begitu seterusnya sampai kita menemukan kata yang dicari. Prinsip Pencarian : Kita asumsikan data sudah terurut, misalkan terurut menurun. Kita menyebut indeks terkecil sebagai indeks ujung paling kiri, dan indeks terbesar sebagai indeks ujung paling kanan. Misalkan indeks kiri Ia dan indeks kanan adalah Ib. Pada mulanya Ia adalah 0 dan Ib adalah N. Langkah 1: Bagi 2 elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan

indeks k=(ia+ib) div 2. (Elemen tengah, L[k], membagi larik menjadi 2 bagian L[Ia k-1] dan bagian kanan L[k+1 Ib]). Langkah 2: Periksa apakah L[k]=X. Jika L[k]=X, pencarian dihentikan sebab X sudah ditemukan, tetapi jika tidak, harus ditentukan apakah pencarian pada larik bagian kiri atau larik bagian kanan. Jika L[k] < X maka pencarian dilakukan pada larik kiri. Sebaliknya jika L[k] >X maka pencarian dilakukan pada larik bagian kanan. Langkah 3: Ulangi langkah 1 sampai X atau Ia>Ib. BAB 8 LINKED LIST LINKED LIST 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 disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field. Bentuk Single Linked List Pengertian: Single artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL..Linked List artinya node-node tersebut saling terhubung satu sama lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.

Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list. Pembuatan Single List Deklarasi Node typedef struct TNode{ int data; TNode *next; }; Penjelasan: 1. Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode 2. Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list. 3. Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL; Single List Menggunakan Head 1. Dibutuhkan satu buah variabel pointer: head 2. 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;

BAB 9 STACK STACK Stack atau tumpukan adalah suatu struktur yang penting dalam pemrograman. Bersifat LIFO ( Last In First Out ). Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Ujung list disebut top. Ada 2 operasi dasar yang bisa dilakukan pada stack yaitu : Push (menambah/menyisipkan data) Pop (menghapus/mengurangi data) Stack Exception Eksekusi suatu operasi stack mungkin mengakibatkan suatu kondisi error condition yang disebut exception. Dalam Stack ADT, operasi pop dan top tidak dapat dilakukan jika stack nya kosong. Upaya mengeksekusi pop dan top pada stack yang kosong akan mengakibatkan adanya EmptyStackException. BAB 10 QUEUE QUEUE Queue atau antrian adalah barisan elemen yang apabila ditambah maka penambahannya berada di posisi belakang dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan (front). Bersifat FIFO ( First In First Out ). Benda yang pertama masuk ke dalam queue akan menjadi benda pertama yang dikeluarkan dari queue. Dalam queue sendiri terdapat beberapa operasi, yaitu: 1. IsEmpty : Mengecek apakah queue kosong atau tidak 2. IsFull : Mengecek apakah queue sudah penuh atau belum 3. Enqueue : Menambahkan data di queue 4. Dequeue : Mengambil data dari queue 5. Clear : Menghapus data dalam antrian 6. View : melihat data dalam antrian

Berbeda dengan stack, queue mempunyai 2 kata kunci, yaitu tail dan head. Fungsi nya buat apa? Head adalah penanda urutan paling depan, sedangkan tail adalah penanda urutan paling belakang. Karena jumlah operasinya banyak, kita kerjakan secara modular aja ya biar lebih mudah. 1. Deklarasi Awal Queue Variabel yang akan digunakan adalah data (array sebagai tempat queue), head, tail. Sama seperti Stack, Nilai dari head dan tail dimulai dari -1 yang menandakan queue kosong. 2. IsEmpty Sama seperti di Stack, IsEmpty berguna untuk mengecek apakah queue kosong atau tidak. Indikator bahwa queue kosong adalah nilai dari head dan tail bernilai -1. 3. IsFull Operasi IsFull digunakan untuk mengecek apakah queue sudah penuh atau belum. Indikator kalau queue penuh adalah nilai tail = max 1. Mengapa? karena nilai maksimal pada array yang mempunyai index 7 pada saat diakses akan mempunyai nilai maksimal 6. 4. Enqueue Enqueue digunakan untuk memasukkan data kedalam queue. Sama seperti push dalam stack. Sebelum memasukkan data kedalam antrian, kita harus mengecek terlebih dahulu apakah queue / antrian sudah penuh atau belum. Kalau belum maka kita harus mengecek apakah head sudah berada pada nilai 0 atau belum. Ini sangat penting karena nilai head tidak akan lebih dari 0. PERLU DIPERHATIKAN! Yang akan bergerak terus adalah tail, sedangkan head hanya penunjuk urutan paling depan, sehingga nilainya tidak pernah lebih dari 0. Kecuali antrian kosong, maka posisi head dan tail akan kembali menjadi -1. 5. Dequeue Kebalikan dari fungsi enqueue, dequeue digunakan untuk mengambil data yang sudah masuk di urutan pertama. Sehingga kita tinggal membaca data yang ada di posisi head. Nah inilah fungsi dari head. Jangan lupa kita cek dulu apakah queue kosong atau tidak. Tapi jika ada isinya, setelah data diambil, data dibelakangnya digeser ke depan. 6. Clear Operasi clear digunakan untuk menghapus data yang ada di dalam queue. Caranya cukup merubah nilai pada head dan tail menjadi -1. Tidak perlu diperhatikan data yang ada di dalam array. Nantinya data data tersebut juga akan ditimpa. 7. View Operasi ini digunakan untuk melihat data yang ada didalam queue. Caranya adalah dengan membaca data pada index yang terdapat diantara head sampai tail.