DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

Ukuran: px
Mulai penontonan dengan halaman:

Download "DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A."

Transkripsi

1 DIKTAT KULIAH STRUKTUR DATA Disusun oleh: Sri Primaini A. FAKULTAS ILMU KOMPUTER UNIVERSITAS INDO GLOBAL MANDIRI PALEMBANG 2016

2 DAFTAR ISI Halaman BAB 1 PENGANTAR KE STRUKTUR DATA Mengapa Struktur Data Diperlukan? Tinjauan Algoritma Tipe Data Instruksi... 4 BAB 2 LARIK Deklarasi Larik Pemrosesan Larik Secara Sekuensial Larik Bertipe Terstruktur Pencarian Pada Larik Pengurutan Data BAB 3 SENARAI Alasan Menggunakan Senarai Tipe Pointer Membuat Senarai Kosong Traversal Penyisipan Elemen Menghapus Elemen Bekerja Dengan Dua atau Lebih Senarai Senarai Yang Info-nya Terstruktur Multi Linked List BAB 4 ANTRIAN Pengertian Dasar Membuat Antrian Kosong Memeriksa Apakah Antrian Kosong Menyisipkan Elemen (EnQueue) Menghapus Elemen Representasi Fisik Antrian Dengan Larik Membuat Antrian Kosong, Representasi Fisik Larik Fungsi Untuk Memeriksa Antrian Kosong, Representasi Fisik Larik Menyisipkan Elemen Antrian, Representasi Fisik Larik Menghapus Elemen Antrian, Representasi Fisik Larik Persoalan Head Maju, Menyisipkan Elemen... 59

3 Halaman BAB 5 TUMPUKAN Pengertian Dasar Membuat Stack Kosong Menyisipkan Elemen Menghapus Elemen Stack Memeriksa Apakah Stack Kosong Representasi Fisik Tumpukan Dengan Larik Menyisipkan Elemen Stack, Representasi Larik Menghapus Elemen Stack, Representasi Larik BAB 6 GRAF Pengertian Dasar Istilah-Istilah Pada Graf Representasi Graf Penelusuran Graf BAB 7 POHON PENCARIAN BINER (BINARY SEARCH TREE, BST) Pendahuluan Hubungan Antar Simpul Pada BST Membuat BST Kosong Penelusuran Pada BST Pencarian Menyisipkan Elemen Menghapus Elemen Menghitung Tinggi Pohon Menghitung Jumlah Simpul Menghitung Jumlah Daun DAFTAR PUSTAKA... 92

4 BAB 1 PENGANTAR KE STRUKTUR DATA 1.1 Mengapa Struktur Data Diperlukan? Struktur data adalah cara mengorganisakan data di memori komputer. Bagaimana data diorganisasikan (struktur data) akan menentukan unjuk kerja program yang memroses data tersebut. Struktur data akan membuat program yang dibangun menjadi lebih efisien. Setiap tahun teknologi perangkat keras makin baik, unjuk kerja komputer makin baik, pemrosesan makin cepat, memori tersedia makin besar. Mengapa efisiensi diperlukan? Diskusikan! Struktur data selalu berkaitan dengan program. Membahas program berarti membahas algoritma. Sehingga dalam setiap bahasan struktur data pasti ada bahasan algoritma. Untuk lebih memudahkan belajar struktur data, berikut akan dibahas mengenai tinjauan instruksi dan notasi algoritma secara ringkas. 1.2 Tinjauan Algoritma Algoritma adalah urutan langkah untuk menyelesaikan masalah. Dalam konteks pemrograman algoritma adalah rancangan urutan instruksi yang nantinya akan diterjemahkan ke bahasa pemrograman dan dieksekusi oleh komputer. Secara sederhana algoritma terdiri dari tiga bagian, yaitu: 1. Judul algoritma: memuat identitas algoritma berupa nama algoritma, keterangan mengenai proses apa yang dilakukan dalam algoritma. Jika algoritma tersebut berupa procedure atau function harus dinyatakan data yang berinteraksi dengan procedure atau function tersebut 2. Bagian deklarasi memuat deklarasi nama dan tipe data serta subprogram (procedure dan atau function) yang digunakan di dalam algoritma. 3. Bagian deksripsi berisi rancangan instruksi yang harus dieksekusi oleh komputer.

5 Struktur Data Tipe Data Tipe data menentukan himpunan nilai yang terkandung di dalam data tersebut serta operasi apa saja yang berlaku terhadap data tersebut, Secara garis besar ada dua macam tipe data, yaitu tipe data dasar dan tipe data bentukan. Tipe data dasar adalah tipe yang dapat langsung dipakai sedangkan tipe data bentukan harus didefinisikan terlebih dahulu dari tipe dasar yang ada. Tipe bentukan didefinisikan jika persoalan yang akan diprogram tidak dapat didefinisikan dengan tipe dasar yang ada. Tabel I memuat tipe data dasar secara ringkas. TABEL I TIPE DATA DASAR Nama Tipe Rentang Nilai Operasi boolean benar (true), dinyatakan dengan angka 1 salah (false), dinyatakan dengan angka 0 Operasi logika: and, or, not, xor menghasilkan nilai bertipe boolean integer Secara teoritis tidak terbatas, ditentukan oleh komputer dan compiler yang digunakan. Operasi aritmatika: +, -, *, div, mod menghasilkan nilai bertipe integer Operasi perbandingan: =,, >, <,, menghasilkan nilai bertipe boolean

6 Struktur Data 3 Tabel I. Tipe Data Dasar (Lanjutan) Nama Tipe Rentang Nilai Operasi real character string Secara teoritis tidak terbatas, ditentukan oleh komputer dan compiler yang digunakan. Semua karakter yang dikenal oleh komputer. Lihat tabel kode ASCII Rangkaian karakter dengan panjang tertentu Operasi aritmatika: +, -, *, / menghasilkan nilai bertipe real Operasi perbandingan:, >, <,, menghasilkan nilai bertipe boolean Operasi perbandingan: =,, >, <,, menghasilkan nilai bertipe boolean Operasi penyambungan: + menghasilkan nilai bertipe string Operasi perbandingan =,, >, <,, menghasilkan nilai bertipe boolean Tipe Data Bentukan Didefinisikan sendiri oleh pemrogram (user defined data type), dibentuk dari satu atau lebih tipe dasar, disebut rekaman. Setiap rekaman terdiri dari satu atau lebih field. Tiap field menyimpan data dari tipe dasar atau tipe bentukan lain yang sudah didefinisikan.

7 Struktur Data 4 Contoh 1.1: Tipe data bentukan type Date = record <Tgl: integer, Bln: integer, Thn: integer, type DataMhs = record <Nama: string[25], NIM: string[12], Tgl_Lahir: Date, IPK: real> 1.4 Instruksi Algoritma 1.1 Contoh Tipe Data Bentukan Ada tiga macam instruksi di dalam algoritma, yaitu: runtunan (sequence), pemilihan dan pengulangan. Instruksi Runtunan Rangkaian instruksi yang diproses secara berurutan, mulai dari instruksi pertama sampai instruksi terakhir. Contoh 1.2: Algoritma menukar dua bilangan bulat X dengan Y. Algoritma MenukarXY {membaca masukan X dengan Y, kemudian mempertukarkan X dengan Y} X,Y: integer temp: integer read(x) read(y) temp X X Y Y temp Algoritma 1.2 Menukar Nilai Dua Bilangan

8 Struktur Data 5 Instruksi Pemilihan Ada tiga macam, yaitu pemilihan dengan satu kasus, pemilihan dengan dua kasus komplementer, dan pemilihan dengan dua atau lebih kasus. Contoh 1.3: Pemilihan dengan satu kasus Algoritma untuk membaca sebuah bilangan bulat dan mencetak kata kelipatan 3 jika bilangan yang dibaca tersebut merupakan kelipatan 3. Algoritma Kelipatan3 {membaca masukan X kemudian mencetak kata kelipatan 3 jika bilangan tersebut merupakan kelipatan 3} X: integer read(x) if X mod 3 = 0 then write ( kelipatan 3 ) Algoritma 1.3 Mencetak kelipatan 3 jika data masukan kelipatan tiga Contoh 1.4: Pemilihan dengan dua kasus komplementer. Algoritma untuk membaca sebuah bilangan bulat dan mencetak pesan bilangan ganjil jika bilangan yang dibaca tersebut bernilai ganjil dan mencetak pesan bilangan genap jika sebaliknya. Algoritma GanjilGenap {membaca masukan X kemudian mencetak kata bilangan ganjil jika bilangan tersebut bernilai ganjil dan mencetak bilangan genap jika sebaliknya} X: integer read(x) if X mod 2 = 1 then write ( bilangan ganjil ) else write( bilangan genap ) Algoritma 1.4 Menentukan ganjil atau genap

9 Struktur Data 6 Contoh 1.5: Pemilihan dengan 2 atau lebih kasus Algoritma yang membaca bilangan bulat kemudian menentukan apakah bilangan tersebut positif atau negatif atau sama dengan nol. Algoritma ApakahPositif {membaca masukan X kemudian menentukan apakah bilangan tersebut positif, atau negatif atau sama dengan 0} X: integer read(x) if X > 0 then write ( positif ) else if X < 0 then write ( negatif ) else write ( nol ) Algoritma 1.5 Menentukan apakah bilangan positif atau negatif atau nol Instruksi Pengulangan Ada 3 macam, yaitu dengan for-to-do, dengan while-do dan dengan repeat-until. Contoh 1.6: Pengulangan dengan for-to-do Algoritma untuk mencetak bilangan 1 sampai dengan 10 secara berurutan. Algoritma CetakFor {mencetak bilangan 1 s.d 10 secara berurutan dengan for-to-do} k: integer for k 1 to 10 do write(k) endfor Algoritma 1.6 Mencetak 1 s.d. 10 dengan for-to-do Contoh 1.7: Pengulangan dengan while-do

10 Struktur Data 7 Algoritma untuk mencetak bilangan 1 sampai dengan 10 secara berurutan. Algoritma CetakWhile {mencetak bilangan 1 s.d 10 secara berurutan dengan whiledo} k: integer k 1 while k 10 do write (k) k k + 1 endwhile Algoritma 1.7 Mencetak 1 s.d.10 dengan while-do Contoh 1.8: Pengulangan dengan repeat-until Algoritma untuk mencetak bilangan 1 sampai dengan 10 secara berurutan. Algoritma CetakRepeat {mencetak bilangan 1 s.d 10 secara berurutan dengan repeatuntil} k: integer k 1 repeat write(k) k k + 1 until k > 10 Algoritma 1.8 Mencetak 1 s.d.10 dengan repeat-until

11 Struktur Data 8 BAB 2 LARIK Salah satu alasan mengapa komputer digunakan untuk mengolah data adalah karena data yang diolah banyak dan dari tipe yang sama. Larik (array) adalah tempat menyimpan sekumpulan elemen data dengan tipe yang sama. Setiap elemen data diacu menggunakan indeks. Indeks menunjukkan posisi relatif elemen data tersebut di dalam kumpulannya. 2.1 Deklarasi Larik Sebelum dapat digunakan untuk menyimpan data, terlebih dulu larik harus dideklarasikan. Mendeklarasikan larik artinya memesan sejumlah tempat di memori sesuai dengan ukuran larik yang dideklarasikan. Larik bersifat statis, artinya ukuran larik harus sudah diketahui sebelum program dieksekusi dan ukuran larik tidak berubah selama program dieksekusi. Deklarasi larik artinya mendefinisikan nama lariknya, ukuran dan tipe elemen larik tersebut. Tipe elemen larik dapat bertipe dasar atau bertipe bentukan. Contoh 2.1: deklarasi larik sebagai variabel A: array[1..100] of integer Algoritma 2.1 Deklarasi larik sebagai variabel Algoritma 2.1 menunjukkan deklarasi larik A dengan 100 elemen larik, semua elemen larik bertipe integer. Contoh 2.2: deklarasi larik sebagai tipe type Larik = array[1..100] of integer A: Larik Algoritma 2.2 deklarasi larik sebagai tipe

12 Struktur Data 9 Contoh 2.3: deklarasi larik menggunakan konstanta const NMAX = 100 type Larik = array[1..nmax] of integer A: Larik Algoritma 2.3 Deklarasi larik menggunakan konstanta Algoritma 2.1, Algoritma 2.2 dan Algoritma 2.3 sama-sama mendeklarasikan larik A bertipe integer dengan 100 elemen. Namun pada Algoritma 2.2 deklarasi larik melalui tipe bentukan, sedangkan pada Algoritma 2.3, banyak elemen larik tidak dideklarasikan secara langsung dengan angka melainkan menggunakan konstanta. Dengan deklarasi seperti Algoritma 2.3, jika diperlukan ukuran larik diubah maka kita hanya mengubah nilai konstanta NMAX. Setelah mendeklarasikan larik, komputer akan menyediakan lokasi memori sebanyak yang dideklarasikan. Gambar 2.1 mengilustrasikan lokasi memori untuk larik A. [1] [2] [3] [4] [5] [6] [7] [99] [NMAX] Gambar 2.1 Larik A dengan NMAX elemen

13 Struktur Data 10 Untuk mengacu elemen larik digunakan indeks. Nilai indeks harus terdefinisi. Indeks merupakan tipe yang memiliki keterurutan (integer atau karakter) Contoh 2.4: mengacu elemen larik A[17], artinya mengacu elemen ke-17 dari larik A A[k], artinya mengacu elemen ke-k dari larik A, tentu saja harga k harus sudah terdefinisi A[k+1], artinya mengacu elemen ke-k+2 dari larik A 2.2 Pemrosesan Larik Secara Sekuensial Pemrosesan terhadap elemen larik dilakukan secara berurutan (sekuensial) sesuai dengan indeksnya. Elemen larik diproses mulai dari elemen pertama sampai elemen terakhir (elemen dengan indeks terbesar) atau sampai elemen tertentu yang diinginkan secara berurutan. Skema umum pemrosesan larik adalah dapat dilihat pada Algoritma 2.4 Algoritma PemrosesanLarik {Skema pemrosesan larik secara beruntun} const NMAX = 100 {maksimum elemen larik} type Larik = array[1..nmax] of integer A: Larik k: integer {indeks larik} for k 1 to NMAX do Proses(A[k]) endfor Algoritma 2.4 Skema Umum Pemrosesan Larik Proses(A[k]) adalah aksi tertentu terhadap elemen A[k], tergantung persoalan yang akan diselesaikan.

14 Struktur Data 11 Konstanta NMAX menyatakan maksimum banyaknya elemen larik. Terkadang banyak data yang akan disimpan tidak mencapai NMAX. Misalnya ada N elemen data yang akan disimpan di dalam larik, maka dari NMAX elemen larik yang efektif terpakai untuk menyimpan ada hanya N elemen. N disebut indeks efektif larik. Tentu saja N <= NMAX. Pada Gambar 2.2, bagian larik yang diarsir adalah bagian yang digunakan untuk menyimpan data. [1] [2] [3] [4] [5] [6] [7] [N] [99] [NMAX] Gambar 2.2 Larik A[1..N] elemen Contoh 2.5: mengisi larik melalui pembacaan Larik yang sudah dideklarasi belum terdefinisi nilainya. Kita dapat menyimpan data ke dalam larik tersebut. Data yang akan disimpan dapat diperoleh dari operasi pembacaan melalui piranti masukan (keyboard). Algoritma 2.5 adalah proses mengisi larik melalui operasi pembacaan. Untuk menyederhanakan penulisan, maka pada contoh-contoh selanjutnya larik yang akan digunakan adalah larik seperti deklarasi pada Algoritma 2.4. Selain itu semua contoh algoritma pemrosesan larik akan disajikan dalam bentuk sub program baik dalam prosedur maupun fungsi.

15 Struktur Data 12 procedure BacaLarik(output A: Larik, input N: integer) {mengisi elemen larik A[1..N] melalui pembacaan} {K. Awal: N terdefinisi, yaitu banyak elemen efektif larik} {K.Akhir: Larik A[1..N] terdefinisi k: integer {indeks larik} for k 1 to N do read(a[k]) endfor Algoritma 2.5 Mengisi elemen larik melalui pembacaan Gambar 2.3 mengilustrasikan keadaan larik sebelum dan setelah pembacaan. Misalkan terdefinisi N = 10 [1] [1] 67 [2] [2] 75 [3] [3] 56 [4] [4] 89 [5] [5] 45 [6] [6] 66 [7] [7] [8] 69 [9] 59 [N] [NMAX] (a) [NMAX] (b) Gambar 2.5 (a) K.Awal (b) Keadaan Akhir dari Algoritma 2.5

16 Struktur Data 13 Contoh 2.6: menentukan harga maksimum larik Diketahui larik A[1..N] yang sudah terdefinisi nilainya. Algoritma akan menentukan harga maksimum elemen larik. procedure TentukanMaks(input A: Larik, input N: integer, output Maks: integer) {menentukan harga maksimum elemen larik A[1..N] } {K. Awal: Larik A[1..N] terdefinisi} {K.Akhir: Maks terdefinisi, yaitu harga maksimum larik} k: integer {indeks larik} Maks A[1] for k 2 to N do if A[k] > Maks then Maks A[k] endfor Algoritma 2.6 Menentukan harga maksimum elemen larik 2.3 Larik Bertipe Terstruktur Pada contoh-contoh yang sudah dibahas digunakan larik bertipe sederhana, yaitu larik bertipe integer. Elemen larik juga dapat bertipe. Contoh 2.7: larik yang elemennya bertipe terstruktur const NMHS = 100 type DataMhs = record <NIM: string[12], Nama: string[20], IPK: real> type LarikMhs = array[1..nmhs] of DataMhs AMhs: LarikMhs Algoritma 2.7 Deklarasi larik bertipe terstruktur

17 Struktur Data 14 Gambar 2.6 mengilustrasikan larik AMhs[1..N]. Misalkan terdefinisi N = 8 [1] 6789 Tiger Woods 2.8 [2] 7890 Ronaldo 3.1 [3] 5678 Roger Federer 3.0 [4] 2345 Serena Williams 2.9 [5] 1234 Taufik Hidayat 3.7 [6] 3456 Valentino Rossi 2.9 [7] 8901 Michael Jordan 3.2 [N] 4567 Schummacher 3.3 [NMAX] Gambar 2.6 Contoh Larik Bertipe Terstruktur Contoh 2.7: mencari data mahasiswa dengan IPK tertinggi. Algoritma akan memberikan keluaran berupa data mahasiswa dengan IPK tertinggi. gunakan prinsip Algoritma 2.6. Jika mengacu ke Gambar 2.6, maka keluaran MhsTerbaik = < 1234, Taufik Hidayat, 3.7> procedure CariMhsTerbaik(input AMhs: LarikMhs, input N: integer, output MhsTerbaik: DataMhs) {mencari data mahasiswa dengan IPK tertinggi } {K. Awal: Larik AMhs[1..N] terdefinisi} {K.Akhir: MhsTerbaik terdefinisi, yaitu data mahasiswa dengan IPK tertinggi} k: integer {indeks larik}

18 Struktur Data 15 MhsTerbaik A[1] for k 2 to N do if AMhs[k].IPK > MhsTerbaik.IPK then MhsTerbaik A[k] endfor Algoritma 2.8 Mencari data mahasiswa dengan IPK tertinggi 2.4 Pencarian Pada Larik Proses sekuensial lain yang sering dilakukan adalah pencarian terhadap elemen data tersebut. Contoh 2.8: mencari keberadaan X di dalam larik integer A[1..N] versi 1. Jika diketahui larik A[1..N], algoritma akan mencari keberadaan X di dalam larik. Jika X ada di dalam larik maka algoritma akan memberikan keluaran true, jika tidak maka akan memberikan keluaran false. Mengacu ke Gambar 2.5(b), misalkan X yang dicari = 60, maka Found = false, misalkan X yang dicari = 77, maka Found = true procedure CariX(input A:: Larik, input N: integer, output Found: boolean) {mencari keberadaan X di dalam larik integer A[1..N] } {K. Awal: Larik A[1..N] terdefinisi, X terdefinisi} {K.Akhir: Jika X ditemukan maka Found = true, jika tidak maka Found = false} k: integer {indeks larik} Found false k 1 while not Found and k N do if A[k] = X then Found true else k k + 1 endwhile Algoritma 2.9 Mencari keberadaan X di dalam larik integer A[1..N] versi 1

19 Struktur Data 16 Contoh 2.9: mencari keberadaan X di dalam larik integer A[1..N] versi 2. Jika diketahui larik A[1..N], algoritma akan mencari keberadaan X di dalam larik. Jika X ada di dalam larik maka algoritma akan memberikan keluaran IdX berupa nilai integer yaitu indeks tempat X ditemukan.jika tidak maka IdX = -1. Mengacu ke Gambar 2.5(b), misalkan X yang dicari = 60, maka IdX = -1, misalkan X yang dicari = 77, maka IdX = 7 procedure CariIdX(input A:: Larik, input N: integer, output IdX: integer) {mencari keberadaan X di dalam larik integer A[1..N] } {K. Awal: Larik A[1..N] terdefinisi, X terdefinisi} {K.Akhir: Jika X ditemukan maka IdX adalah tempat X ditemukan, jika tidak maka IdX = -1} k: integer {indeks larik} Found: boolean Found false k 1 while not Found and k N do if A[k] = X then Found true else k k + 1 if Found then IdX k else IdX -1 Algoritma 2.10 Mencari keberadaan X di dalam larik integer A[1..N] versi Pengurutan Data Mengurutkan data adalah pekerjaan yang sering dilakukan dalam pemrosesan data. Ada berbagai metode pengurutan data seperti metode gelembung, metode seleksi, metode sisip dan metode-metode lain yang memerlukan kajian struktur

20 Struktur Data 17 data lanjutan. Pada buku ini akan dibahas metode pengurutan yang paling sederhana, yaitu metode gelembung. procedure Pengurutan(input/output A: Larik, input N: integer) {mengurutkan elemen larik A[1..N]dari kecil ke besar dengan metode gelembung } {K. Awal: Larik A[1..N] terdefinisi} {K.Akhir: Larik A[1..N] terurut dari kecil ke besar} i,k: integer temp: integer for i 1 to N-1 do for k N downto i+1 do if A[k] < A[k-1] then temp A[k] A[k] A[k-1] A[k-1] temp endfor endfor Algoritma 2.11 Mengurutkan data dari kecil ke besar dengan metode gelembung Soal Latihan 1. Buat algoritma untuk mencari harga minimum larik A[1..N] 2. Buat algoritma untuk menentukan indeks tempat harga minimum larik A[1..N] berada. 3. Buat algoritma untuk mengurutkan elemen larik A[1..N] dari besar ke kecil 4. Buat algoritma untuk mengurutkan elemen larik mahasiswa dari kecil ke besar berdasarkan NIM

21 Struktur Data 18 BAB 3 SENARAI Seringkali persoalan yang dihadapi terlalu sulit untuk direpresentasikan menggunakan struktur data yang tersedia, sehingga kita perlu membangun sendiri struktur data yang disebut user-defined data structured. Struktur data standard yang sering digunakan adalah senarai (list), tumpukan (stack), antrian (queue), graf (graph) dan pohon (tree). 3.1 Alasan Menggunakan Senarai Misalkan satu perusahaan besar akan mengadakan pertemuan antar kantor cabang perusahaan. Ada 500 orang yang akan menjadi peserta pertemuan yang akan tinggal di lima hotel yang berbeda. Setiap peserta diberi kebebasan untuk memilih hotel tempatnya menginap. Mungkin saja ke-500 peserta akan tinggal di satu hotel yang sama (ke-4 hotel lainnya kosong), atau 500 peserta tersebut akan tersebar di 5 hotel yang berbeda. Panitia pertemuan perlu membuat daftar peserta menurut hotel dan meminta kita untuk membuat program untuk keperluan tersebut. Kita dapat menggunakan larik untuk masing-masing hotel, jadi diperlukan lima larik yang masing-masing didefinisikan untuk menampung jumlah maksimum peserta. Penggunaan larik untuk setiap hotel akan menghabiskan tempat sia-sia, karena 5 hotel dikalikan 500 peserta = 2500 elemen larik. Akan data 2000 elemen larik yang tidak terpakai. Idealnya, informasi mengenai peserta harus disimpan sedemikian rupa sehingga hanya yang diperlukan saja yang dideklarasikan. Perhatikan Gambar 3.1. H1 H2 H3 H4 H5 [1] [1] [1] [1] [1] [2] [3] [500] [500] [500] [500] [500] Gambar 3.1. Lima larik untuk merepresentasi 5 hotel Jika persoalan tersebut direpresentasikan dengan senarai seperti terlihat pada Gambar 3.2.

22 Struktur Data 19 H1 H2 H3 H4 H Gambar 3.2. Senarai dari Gambar 1 Dengan senarai cukup disediakan sebuah larik dengan 500 elemen yang digunakan untuk merepresentasikan lima daftar (list) peserta yang menginap di lima hotel. 3.2 Tipe Pointer Dari Gambar 3.2 terlihat bahwa setiap elemen larik, selain menyimpan data juga menyimpan alamat (dalam Gambar 3.2 berupa indeks) sebagai penunjuk (pointer) posisi elemen larik yang mengikutnya. Elemen yang menyimpan data dan alamat seperti ini disebut elemen senarai. Jadi senarai adalah sekumpulan elemen bertipe sama, setiap elemen terdiri dari dua bagian, yaitu bagian yang menyimpan informasi dan bagian yang menyimpan alamat elemen berikutnya. Gambar 3.3 menunjukkan senarai secara lojik Info Next (a)elemen Senarai First (b) Senarai Kosong First (c) Senarai Dengan 3 Elemen Gambar 3.3. (a) Elemen Senarai, (b) Senarai Kosong, (c)senarai Dengan 3 Elemen

23 Struktur Data 20 Secara algoritmik, definisi senarai dapat dilihat pada Algoritma 3.1. Deklarasi global: type TInfo = integer {atau tipe terdefinisi lainnya} type Address = pointer to Elemen type Elemen = record <Info: TInfo, Next: Address> type Senarai = record <First: Address> P: Address L: Senarai {First menyimpan alamat elemen pertama senarai} {P adalah variabel yang menyimpan alamat sebuah elemen} {Cara akses: Info(P): mengakses info elemen yang alamatnya P Next(P): mengakses alamat elemen setelah elemen dengan alamat P} procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K. Awal: - } {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi} {K.Akhir: P dikembalikan ke sistem} Algoritma 3.1. Deklarasi Senarai TInfo adalah tipe terdefinisi yang merepresentasikan informasi yang akan disimpan di dalam elemen. Tipe Address adalah tipe yang menyimpan alamat elemen, bisa berupa indeks larik ataupun alamat memori, tergantung nanti bagaimana senarai direpresentasikan. Senarai dikenali melalui alamat elemen pertamanya. Dengan demikian jika didefinisikan First adalah alamat elemen pertama, maka elemen berikut dapat diakses secara berurutan melalui Next. Mengapa harus senarai? Senarai adalah struktur data yang dinamis, ukurannya (banyak elemen) dapat berubah selama eksekusi program. Menghemat memori

24 Struktur Data 21 Setiap elemen menyimpan alamat elemen berikutnya. Ada dua cara untuk merepresentasikan alamat. Jika senarai dibangun menggunakan larik, maka alamat adalah indeks larik. Jika senarai dibangun langsung dari memori, maka alamat adalah alamat memori. Tipe pointer adalah fasilitas bahasa yang digunakan untuk menangkap ekivalensi dari alamat memori. Notasi algoritmik untuk tipe pointer adalah sebagai berikut: Nama tipe: pointer to Rentang nilai: alamat sel memori Konstanta: Nil, untuk menyatakan alamat tidak terdefinisi Operator perbandingan: = dan, menghasilkan nilai boolean Operasi Dasar Terhadap Senarai 1. Create: membuat senarai kosong 2. Traversal: mengunjungi elemen senarai mulai dari elemen pertama sampai elemen terakhir atau elemen tertentu yang diinginkan dan melakukan pemrosesan 3. Insert: menyisipkan elemen 4. Delete: menghapus elemen 5. Bekerja dengan 2 senarai atau lebih 3.3 Membuat senarai kosong procedure Create(output L: Senarai) {membuat senarai kosong} {K. Awal: - } {K.Akhir: tercipta sebuah list kosong, L.First = Nil} L.First = Nil Algoritma 3.2. Membuat Senarai Kosong

25 Struktur Data Traversal Ada dua skema, yaitu skema repeat-until yang memeriksa apakah senarai kosong dan skema while-do tidak memeriksa apakah senarai kosong atau tidak. Traversal dengan skema repeat - until procedure Traversal1(input L: Senarai) {traversal list dengan kasus senarai kosong} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan diproses} P: Address if L.First = Nil then write ( senarai kosong ) else Inisialisasi P L.First repeat Proses(P) P Next(P) until P = Nil Algoritma 3.3. Traversal Dengan Kasus Kosong Traversal dengan skema while-do procedure Traversal2(input L: Senarai) {traversal list tanpa penanganan kasus senarai kosong} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan diproses} P: Address Inisialisasi P L.First while P Nil do Proses(P) P Next(P) endwhile P = Nil Algoritma 3.4. Traversal Tanpa Kasus List Kosong

26 Struktur Data 23 Contoh 3.1: Mencetak semua info elemen senarai Untuk mencetak semua info elemen senarai berarti harus dilakukan traversal terhadap senarai mulai dari elemen pertama sampai elemen terakhir. Proses yang dilakukan adalah pencetakan. procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai. Jika senarai kosong cetak pesan senarai kosong } {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak} P: Address if L.First = Nil then write ( list kosong ) else P L.First repeat write (Info(P)) P Next(P) until P = Nil Algoritma 3.5. Mencetak Info Semua Elemen Contoh 3.2: Menghitung banyak elemen Traversal senarai dan menghitung banyak elemen. Setiap kali sebuah elemen dikunjungi berarti banyak elemen bertambah 1. Perhatikan ilustrasi berikut: First First NEl = 0 NEl = 3 Gambar 3.4. Menghitung Banyak Elemen

27 Struktur Data 24 procedure HitElemen(input L: Senarai, output NEl: integer) {Menghitung banyak elemen senarai} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: NEl terdefinisi, yaitu banyak elemen senarai } P: Address NEl 0 P L.First while P Nil do NEl NEl + 1 P Next(P) endwhile Algoritma 3.6. Menghitung Banyak Elemen Contoh 3.3 Buat algoritma untuk menghitung banyak elemen senarai yang info-nya ganjil Perhatikan ilustrasi berikut: First NGj = -99 First First NGj = 2 NGj = 0 Gambar 3.5. Menghitung Banyak Elemen Ganjil

28 Struktur Data 25 procedure HitGanjil(input L: Senarai, output NGj: integer) {Menghitung banyak elemen senarai yang info-nya ganjil} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: NGj terdefinisi, yaitu banyak elemen senarai yang bernilai ganjil. Jika senarai kosong, maka NGj = -99 } P: Address if L.First = Nil then NGj -99 else NGj 0 repeat if Info(P) mod 2 = 1 then NGj NGj + 1 P Next(P) until P = Nil Algoritma 3.7. Menghitung Banyak Elemen yang Info-nya Ganjil Contoh 3.4 : Pencarian Pencarian adalah menelusuri (traversal) elemen senarai mulai dari elemen pertama sampai elemen yang dicari ditemukan atau sampai elemen terakhir jika yang dicari tidak ditemukan. Proses yang dilakukan selama penelusuran adalah membandingkan apakah info elemen senarai yang dikunjungi sama dengan yang dicari. Jika sama berarti yang dicari ditemukan dan penelusuran dihentikan. Jika info elemen yang dikunjungi tidak sama dengan yang dicari maka penelusuran dilanjutkan ke elemen berikutnya. Ada dua macam algoritma pencarian, yaitu (1) hasil pencarian berupa nilai boolean, true jika yang dicari ditemukan dan false yang dicari tidak ditemukan. (2) Hasil pencarian berupa alamat elemen yang dicari tersebut ditemukan, nil jika yang dicari tidak ditemukan. Perhatikan ilustrasi pada Gambar 3.6.

29 Struktur Data 26 (1) Keluaran berupa nilai boolean First Misalkan X yang dicari = 73 Found = false First First Found = true Found = false (2) Keluaran berupa alamat Misalkan X yang dicari = 73 First PX = Nil First First PX PX = Nil Gambar 3.6. Pencarian procedure Search1(input L: Senarai, input X: TInfo, output Found: boolean) {Mencari apakah X ada di dalam elemen senarai} {K. Awal: L terdefinisi, mungkin kosong, X terdefinisi yaitu info yang dijadikan dasar pencarian} {K.Akhir: Jika X ditemukan maka Found = true, Jika X tidak ditemukan maka Found = false} P: Address Found false P L.First while not Found and P Nil do if Info(P) = X then Found true else P Next(P) endwhile Algoritma 3.8. Pencarian Dengan Keluaran Boolean

30 Struktur Data 27 procedure Search2(input L: Senarai, input X: TInfo, output PX: Address) {Mencari apakah X ada di dalam elemen senarai} {K. Awal: L terdefinisi, mungkin kosong, X terdefinisi yaitu info yang dijadikan dasar pencarian} {K.Akhir: Jika X ditemukan maka PX adalah alamat elemen tempat X ditemukan Jika X tidak ditemukan maka PX = Nil} P: Address Found false; P L.First while not Found and P Nil do if Info(P) = X then Found true else P Next(P) endwhile if Found then PX P else PX Nil Algoritma 3.9. Pencarian Dengan Keluaran Alamat 3.5 Penyisipan Elemen 1. Penyisipan sebagai elemen pertama 2. Penyisipan sebagai elemen tengah 3. Penyisipan sebagai elemen terakhir Penyisipan Sebagai Elemen Pertama Sebelum Penyisipan First Setelah Penyisipan First P Gambar 7. Penyisipan Sebagai Elemen Pertama

31 Struktur Data 28 procedure InsertFirst(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen pertama senarai} Next(P) L.First L.First P Algoritma Menyisipkan Sebagai Elemen Pertama Penyisipan Sebagai Elemen Tengah Sebelum Penyisipan First Setelah Penyisipan First Prev Prev P P Gambar 8. Penyisipan Sebagai Elemen Tengah procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev} Next(P) Next(Prev) Next(Prev) P Algoritma Menyisipkan Sebagai Elemen Tengah

32 Struktur Data 29 Penyisipan Sebagai Elemen Terakhir Sebelum Penyisipan First Setelah Penyisipan First Last Last P P Gambar 3.9. Penyisipan Sebagai Elemen Terakhir procedure InsertLast(input/output L: Senarai, input P: Address) {Menyisipkan P sebagai elemen terakhir} {K. Awal: L terdefinisi, mungkin kosong P terdefinisi yaitu alamat elemen yang akan disisipkan} {K.Akhir: P menjadi elemen terakhir senarai} Last: Address if L.First = Nil then L.First P else Last L.First while Next(Last) Nil do Last Next(Last) endwhile Next(Last) P Algoritma Menyisipkan Sebagai Elemen Terakhir

33 Struktur Data 30 Contoh 3.5: Pencarian dan Penyisipan Buat algoritma untuk mencari keberadaan X di dalam senarai. Jika X tidak ditemukan, maka alokasikan sebuah elemen dengan alamat P, simpan X sebagai Info(P) dan sisipkan P sebagai elemen pertama senarai. Perhatikan Gambar Kasus (1) jika X tidak ditemukan K. Awal K.Akhir First Mis. X = 60 First Kasus (2) jika X ditemukan P K. Awal K.Akhir First Mis. X = 73 First Gambar Pencarian dan Penyisipan procedure CaridanSisip(input/output L: Senarai, input X: TInfo) {mencari keberadaan X, jika tidak ditemukan maka alokasikan sebuah elemen dengan alamat P, simpan X sebagai Info(P) dan sisipkan P sebagai elemen pertama senarai} {K. Awal: L terdefinisi, X terdefinisi} {K.Akhir: Jika X tidak ditemukan, maka X menjadi elemen pertama senarai} P, Q: Address Found: boolean Q L.First Found false while not Found and Q Nil do if Info(Q) = X then Found true else Q Next(Q) endwhile if not Found then

34 Struktur Data 31 Alokasi(P) Info(P) X Next(P) Nil InsertFirst(L, P) Algoritma Pencarian dan Penyisipan Contoh 3.6: Penyisipan sebagai elemen ke-k Tulis algoritma untuk menyisipkan elemen sebagai elemen ke-k senarai L. Perhatikan Gambar Kasus (1) Senarai kosong K. Awal L.First K. Akhir L.First P Kasus (2) Senarai tidak kosong, k = 1 K. Awal L.First K. Akhir L.First P Kasus (3) Senarai tidak kosong, k 1 K. Awal L.First K. Akhir L.First P P, k =2 Gambar 3.11 Penyisipan Sebagai Elemen Ke-k

35 Struktur Data 32 procedure SisipK(input/output L: Senarai, input P: Address, input k: integer) {menyisipkan P sebagai elemen ke-k pada senarai L} {K. Awal: L terdefinisi, P terdefinisi, k terdefinisi >= 1} {K.Akhir: P menjadi elemen ke-k senarai L} Q, PrevQ: Address m: integer if (L.First = Nil or k = 1 then InsertFirst(L,P) else Q L.First; PrevQ Nil m = 1 while Q Nil and m<k do PrevQ Q Q Next(Q) m m + 1 endwhile InsertAfter(P, PrevQ) Algoritma Penyisipan Sebagai Elemen ke-k 3.6 Menghapus Elemen 1. Menghapus Elemen Pertama 2. Menghapus Elemen Tengah 3. Menghapus Elemen Terakhir Menghapus Elemen Pertama Setelah Penghapusan First First P Gambar Menghapus Elemen Pertama

36 Struktur Data 33 procedure DeleteFirst(input/output L: Senarai, output P:Address) {menghapus elemen pertama senarai} {K. Awal: L terdefinisi, tidak kosong} {K.Akhir: P adalah alamat elemen yang dihapus} P L.First L.First Next(L.First) Menghapus Elemen Tengah Algoritma Menghapus Elemen Pertama Sebelum Penghapusan First Setelah Penghapusan First Prev Prev Gambar Menghapus Elemen Tengah P procedure DeleteAfter(input/output P, Prev: Address) {menghapus elemen setelah elemen dengan alamat Prev} {K. Awal: Prev terdefinisi} {K.Akhir: P adalah alamat elemen yang dihapus} P Next(Prev) Next(Prev) Next(Next(Prev)) Algoritma Menghapus Elemen Tengah

37 Struktur Data 34 Menghapus Elemen Terakhir Sebelum Penghapusan First Setelah Penghapusan First PrevLast Last PrevLast Last Gambar Menghapus Elemen Terakhir P procedure DeleteLast(input/output L: Senarai, output P:Address) {menghapus elemen terakhir senarai} {K. Awal: L terdefinisi, tidak kosong} {K.Akhir: P adalah alamat elemen yang dihapus} Last, PrevLast: Address PrevLast Nil Last L.First while Next(Last) Nil do PrevLast Last Last Next(Last) endwhile P Last Next(PrevLast) Nil Algoritma Menghapus Elemen Terakhir

38 Struktur Data 35 Contoh 3.7: Hapus X Buat algoritma untuk elemen yang info-nya = X. Perhatikan Gambar Kasus (1) jika X tidak ditemukan K. Awal K.Akhir First First Mis. X = Kasus (2) jika X ditemukan First First Mis. X = Gambar Pencarian dan Penghapusan P procedure HapusX(input/output L: Senarai, input X: TInfo, output P: Address) {mencari keberadaan X, jika ditemukan maka hapus elemen X} {K. Awal: L terdefinisi, X terdefinisi} {K.Akhir: Jika X ditemukan P adalah alamat elemen yang dihapus. Jika X ditemukan, maka P = Nil} PrevQ, Q: Address Found: boolean Q L.First; PrevQ Nil Found false while not Found Q Nil do if Info(Q) = X then Found true else PrevQ Q Q Next(Q) endwhile if Found then {X ditemukan} if PrevQ = Nil then DeleteFirst(L,P) else DeleteAfter(P, PrevQ) else {X tidak ditemukan} P Nil Algoritma Mencari dan Menghapus

39 Struktur Data Bekerja Dengan Dua atau Lebih Senarai 1. Penyambungan Senarai (Konkat) 2. Penggabungan Senarai (Merger) 3. Salin Senarai (Copy) 4. Balik Senarai (Reverse) 5. Mengambil Info Tertentu (Query) Penyambungan Senarai (Konkat) Menyambung senarai L1 dengan senarai L2. Senarai L1 berada di depan K. Awal L1.First L2.First K.Akhir L1.First Gambar Penyambungan Senarai procedure Konkat(input/output L1: Senarai, input L2: Senarai) {menyambung senarai L1 dengan senarai L2, dengan senarai L1 berada di depan} {K. Awal: L1, L2 terdefinisi} {K.Akhir: L2 tersambung dengan L1} P: Address P L1.First while Next(P) Nil do P Next(P) endwhile Next(P) L2.First Algoritma Menghapus Elemen Tengah

40 Struktur Data 37 Penggabungan Senarai (Merger) Menggabung senarai L1 dan L2 yang info-nya terurut dari kecil ke besar, L3 adalah hasil penggabungan dan info-nya tetap terurut. K. Awal L1.First L2.First K.Akhir L3.First Gambar Penggabungan Senarai procedure Merger(input L1,L2: Senarai, output L3: Senarai) {Menggabung senarai L1 dengan L2 yang info-nya terurut dari kecil ke besar. Senarai L3 merupakan penggabungan, tetap terurut} {K. Awal: L1, L2 terdefinisi, info-nya terurut dari kecil ke besar} {K.Akhir: L3 terdefinisi merupakan hasil penggabungan L1 dengan L2 dan tetap terurut} P1,P2,Q: Address P1 L1.First P2 L2.First Create(L3) while P1 Nil and P2 Nil do Alokasi(Q) Next(Q) Nil if Info(P1) < Info(P2) then Info(Q) Info(P1) P1 Next(P1) else Info(Q) Info(P2) P2 Next(P2) InsertLast(L3,Q) endwhile while P1 Nil do

41 Struktur Data 38 Alokasi(Q) Next(Q) Nil Info(Q) Info(P1) InsertLast(L3,Q) P1 Next(P1) endwhile while P2 Nil do Alokasi(Q) Next(Q) Nil Info(Q) Info(P1) InsertLast(L3,Q) P2 Next(P2) endwhile Salin Senarai (Copy) Membuat salinan senarai L1 ke L2 Algoritma Penggabungan Senarai K. Awal K.Akhir L1.First L2.First Gambar Menyalin Senarai procedure Copy(input L1: Senarai, output L2: Senarai) {menyalin senarai L1 ke senarai L2} {K. Awal: L1terdefinisi} {K.Akhir: L2 terdefinisi, merupakan salinan dari L1} P,Q: Address Create(L2) P L1.First while P Nil do Alokasi(Q) Next(Q) Nil Info(Q) Info(P) InsertLast(L2,Q) P Next(P) endwhile Algoritma Penggabungan Senarai

42 Struktur Data 39 Balik Senarai (Reverse) Membalik senarai L1, hasilnya adalah senarai L2 K. Awal K.Akhir L1.First L2.First Gambar Balik Senarai procedure Reverse(input L1: Senarai, output L2: Senarai) {menyalin senarai L1 ke senarai L2 secara terbalik} {K. Awal: L1terdefinisi} {K.Akhir: L2 terdefinisi, merupakan balikan dari L1} P,Q: Address Create(L2) P L1.First while P Nil do Alokasi(Q) Next(Q) Nil Info(Q) Info(P) InsertFirst(L2,Q) P Next(P) endwhile Algoritma Membalik Senarai

43 Struktur Data 40 Mengambil Info Tertentu (Query) Contoh 3.8: diketahui senarai L1, akan diambil elemen senarai yang info-nya < X, hasilnya disimpan di senarai L2 K. Awal L1.First Mis. X = K.Akhir L2.First Gambar Mengambil Info Tertentu procedure QueryX(input L1: Senarai, input X: TInfo, output L2: Senarai) {menyalin senarai L1 yang info-nya < X ke senarai L2 } {K. Awal: L1terdefinisi} {K.Akhir: L2 terdefinisi, merupakan hasil query, semua infonya < X} P,Q: Address Create(L2) P L1.First while P Nil do if Info(P) < X then Alokasi(Q) Next(Q) Nil Info(Q) Info(P) InsertLast(L2,Q) P Next(P) endwhile Algoritma Mengambil informasi tertentu

44 Struktur Data Senarai yang Info-nya Terstruktur Tipe informasi yang disimpan di dalam elemen senarai dapat merupakan tipe terstruktur, seperti terlihat pada Algoritma Deklarasi global: type DataMhs = record <Nama: string[20], NIM: string[12], IPK: real> type Address = pointer to Elemen type Elemen = record <Info: DataMhs, Next: Address> type Senarai = record <First: Address> L: Senarai P: Address {First menyimpan alamat elemen pertama senarai} {P adalah variabel yang menyimpan alamat sebuah elemen} {Cara akses: Info(P).Nama: mengakses Nama dari elemen yang alamatnya P Info(P).NIM: mengakses NIM dari elemen yang alamatnya P Info(P).IPK: mengakses IPK dari elemen yang alamatnya P Next(P): mengakses alamat elemen setelah elemen dengan alamat P} procedure Alokasi(output P: Address) {memesan satu unit penyimpan untuk dijadikan elemen senarai} {K. Awal: - } {K.Akhir: P terdefinisi, siap digunakan sebagai elemen list} procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi} {K.Akhir: P dikembalikan ke sistem} Algoritma Deklarasi Senarai Terstruktur

45 Struktur Data 42 Contoh 3.9: Diketahui senarai yang info elemennya bertipe data mahasiswa. Buat algoritma untuk mencetak semua data mahasiswa yang IPK-nya 3.0. Jika senarai kosong, cetak pesan senarai kosong. Jika tidak ada mahasiswa yang IPK-nya 3.0 maka cetak pesan tidak ada mahasiswa yang IPK-nya 3.0 procedure Cetak3(input L: Senarai) {mencetak semua data mahasiswa yang IPK-nya 3.0} {K. Awal: L terdefinisi, mungkin kosong} {K.Akhir: Semua data mahasiswa yang IPK-nya 3.0 dicetak Jika senarai kosong cetak senarai kosong Jika tidak ada data mahasiswa yang IPK-nya 3.0, cetak tidak ada mahasiswa yang IPK-nya 3.0 } P: Address Cetak: boolean if L.First = Nil then write ( Senarai Kosong ) else P L.First Cetak false repeat if (Info(P).IPK 3.0) then write (Info(P)) Cetak true P Next(P) until P = Nil if not Cetak then write ( tidak ada mahasiswa yang IPK-nya 3.0 ) Algoritma Mencetak Data Mahasiswa Yang IPK-nya 3.0

46 Struktur Data Multi Linked List Senarai yang elemennya senarai Contoh 3.10: Senarai data pegawai dan anak-anaknya type DataAnak = record <Id_Anak: string[9], Nama: string[25], Tgl_Lahir: Date> type AddressA = pointer to CellA type CellA = record < InfoA: DataAnak, NextA: AddressA> type DataPeg = record <NIP: string[12], Nama: string[25], Tgl_Lahir: Date Departemen: character > type AddressP = pointer to CellP type CellP = record < InfoP: DataPeg, NextP: AddressP, NextA: AddressA> type ListPeg = record <FirstP: AddressP> L: ListPeg Algoritma 3.25 Deklarasi Senarai Pegawai Dengan Anak-Anaknya Gambar 3.20 memberikan ilustrasi mengenai senarai data pegawai dan anakanaknya. Untuk mengetahui data orang tua (pegawai) dari seorang anak, apakah identitas orang tua (NIP) perlu disimpan juga di dalam DataAnak? Diskusikan.

47 Struktur Data 44 Elemen CellP Elemen CellA InfoP NextP InfoA NextA NextA FirstP Pegawai1 NextP Pegawai2 NextP Pegawai3 NextP PegawaiN NextA NextA Anak1Pegawai1 NextA Anak1Pegawai1 Anak1Pegawai1 NextA Anak1Pegawai1 Anak1Pegawai1 NextA Anak1Pegawai1 Soal Latihan Bab 3 Gambar 3.20 Senarai Data Pegawai dan Anak-anaknya 1. Buat algoritma untuk mencetak semua info elemen senarai yang bernilai genap. Jika senarai kosong, maka cetak pesan tidak ada elemen. Jika senarai tidak kosong maka semua info yang bernilai genap dicetak. Jika tidak ada info yang bernilai genap, maka cetak pesan tidak ada info bernilai genap. 2. Buat algoritma untuk memperoleh info maksimum elemen senarai 3. Sama seperti Soal No. 2, tetapi keluarannya adalah alamat tempat info maksimum berada. 4. Buat algoritma untuk menukar info maksimum dengan info elemen pertama senarai. 5. Buat algoritma untuk menghitung total info elemen senarai 6. Buat algoritma untuk menghitung harga rata-rata info elemen senarai. Untuk menghitung harga rata-rata pastikan bahwa senarai tidak kosong, supaya tidak ada pembagian dengan 0. Gunakan skema repeat-until.

48 Struktur Data Diketahui senarai yang info elemennya terurut dari kecil ke besar. Buat algoritma untuk menyisipkan sebuah elemen dengan tetap menjaga keterurutan. 8. Buat algoritma untuk menghapus semua elemen senarai yang info-nya = X. 9. Buat algoritma untuk menghapus elemen senarai yang menyimpan info terkecil (minimum) 10. Buat algoritma untuk menyambung senarai S1 dengan senarai S2, dengan senarai S2 berada di depan senarai S Diketahui senarai S1 dan S2 yang info-nya terurut dari besar ke kecil. Buat algoritma untuk menggabung senarai S1 dengan S2, dan hasil penggabungan tetap terurut dari besar ke kecil. 12. Diketahui senarai S1 dan S2 yang info-nya terurut dari kecil ke besar. Buat algoritma untuk menggabung senarai S1 dengan S2, dan hasil penggabungan terurut dari besar ke kecil. 13. Buat algoritma untuk mengambil info yang bernilai ganjil dari senarai S1 dan menyimpannya di senarai S2 Untuk soal No. 14 s.d Soal No. 20, gunakan deklarasi Algoritma Tulis algoritma untuk memperoleh data mahasiswa dengan IPK tertinggi. Keluaran bertipe DataMhs. 15. Buat algoritma untuk mencari keberadaan data mahasiswa yang NIM-nya = NIMX. Algoritma akan memberikan keluaran bertipe boolean, true jika data ditemukan dan false jika data tidak ditemukan. 16. Tulis algoritma untuk menghitung IPK rata-rata seluruh mahasiswa. 17. Diketahui senarai yang info elemennya bertipe mahasiswa, terurut dari kecil ke besar berdasarkan NIM. Buat algoritma untuk menyisipkan elemen yang alamatnya P, setelah penyisipan senarai tetap terurut. 18. Buat algoritma untuk menghapus elemen senarai mahasiswa yang NIM-nya = NIMX 19. Buat algoritma untuk menghapus semua elemen senarai mahasiswa yang IPK-nya < 2.0

49 Struktur Data Buat algoritma untuk mengambil semua data mahasiswa dengan IPK 2.0 dan menyimpannya di senarai L2. Untuk Soal No. 21 s.d. 23, gunakan deklarasi Algoritma Tulis algoritma untuk mencetak data pegawai yang tidak punya anak 22. Tulis algoritma untuk mencetak data pegawai beserta anak-anaknya 23. Tulis algoritma untuk mencari data orang tuanya, jika diketahui data identitas anak

50 Struktur Data 47 BAB 4 ANTRIAN 4.1 Pengertian Dasar Secara lojik antrian (queue) adalah senarai yang penyisipan elemen hanya dilakukan sebagai elemen terakhir dan penghapusan elemen hanya dilakukan terhadap elemen pertama. Struktur data antrian digunakan memodelkan antrian, misalnya antrian proses pada sistem multiprogramming, antrian nasabah di bank, antrian paket data yang akan dilewatkan di jaringan, antrian dokumen yang akan dicetak di printer bersama, dan sebagainya. Seperti layaknya antrian di dunia nyata, maka elemen baru disisipkan sebagai elemen terakhir dan elemen yang dihapus adalah elemen paling depan. Berlaku prinsip FIFO (first in first out). Secara algoritmik, deklarasi antrian seperti terlihat pada Algoritma 4.1. type TInfo = integer {atau tipe terdefinisi lainnya} type Address = pointer to Elemen type Elemen = record <Info: TInfo, Next: Address> type Antrian = record <Head: Address, Tail: Address> Q: Antrian Algoritma 4.1 Deklarasi Antrian Antrian dikenali melalui alamat elemen pertama (Head) dan alamat elemen terakhir (Tail). Antrian kosong adalah antrian yang tidak memiliki elemen, Head = Nil dan Tail = Nil. Head Tail (a) Antrian Kosong Head Tail Head Tail (b) Antrian Dengan 3 Elemen (c) Antrian Dengan 1 Elemen Gambar 4.1. (a) Antrian Kosong, (b) Antrian Dengan 3 Elemen, (c) Antrian Dengan 1 Elemen Operasi Dasar Terhadap Antrian

51 Struktur Data Membuat Antrian Kosong (CreateQ) 2. Menyisipkan Elemen (EnQueue) 3. Menghapus Elemen (DeQueue) 4. Memeriksa Apakah Antrian Kosong 4.2 Membuat Antrian Kosong Antrian kosong adalah Head = Nil, Tail = Nil procedure CreateQ(output Q: Antrian) {membuat antrian kosong} {K. Awal: - } {K.Akhir: Antrian Q terdefinisi} Q.Head Nil Q.Tail Nil Algoritma 4.2. Membuat Antrian Kosong 4.3 Memeriksa Apakah Antrian Kosong Fungsi EmptyQ mengembalikan true jika antrian Q kosong function EmptyQ(input Q: Antrian) {mengembalikan true jika antrian Q kosong} return (Q.Head = Nil and Q.Tail = Nil) Algoritma 4.3. Memeriksa Apakah Antrian Kosong

52 Struktur Data Menyisipkan Elemen Antrian (EnQueue) Sebelum Penyisipan Setelah Penyisipan Head Tail Head Tail X X Gambar 4.2. Penyisipan Elemen Antrian (EnQueue) procedure EnQueue(input/output Q:Antrian, input X: TInfo) {menyisipkan X sebagai elemen antrian} {K. Awal: Q terdefinisi, mungkin kosong, X terdefinisi} {K.Akhir: X menjadi elemen antrian} P: Address Alokasi(P) Next(P) Nil Info(P) X if EmptyQ(Q) then Q.Head P Q.Tail P else Next(Q.Tail) P Q.Tail P Algoritma 4.4. Menyisipkan Elemen Antrian (EnQueue)

53 Struktur Data Menghapus Elemen Antrian (DeQueue) Setelah Penghapusan Head Tail Head Tail X = 58 Gambar 4.3. Menghapus Elemen Antrian (DeQueue) procedure DeQueue(input/output Q:Antrian, output X: TInfo) {menghapus elemen antrian} {K. Awal: Q terdefinisi, tidak kosong} {K.Akhir: X adalah elemen yang dihapus, antrian mungkin jadi kosong} X Info(Q.Head) if Q.Head = Q.Tail then Q.Head Nil Q.Tail Nil else Q.Head Next(Q.Head) {antrian dengan satu elemen} Algoritma 4.5. Menghapus Elemen Antrian (DeQueue)

54 Struktur Data Representasi Fisik Antrian Dengan Larik Antrian dapat direpresentasi secara fisik dengan dua cara, yaitu menggunakan pointer dan menggunakan larik Algoritma 4.6 menunjukkan antrian yang direpresentasi menggunakan larik const NMAX = 100 {maksimum elemen larik} type TInfo = integer {atau tipe terdefinisi lainnya} type Address = integer[0..nmax] type Antrian = record <Head: Address, Tail: Address, ArrQ: array[1..nmax] of TInfo> Q: Antrian Algoritma 4.6. Deklarasi Antrian Representasi Larik Q.Head = 1 Q.Tail = [1] [2] [3] [4] [5] [99] [100] (a) Antrian Dengan 4 Elemen Q.Head = 4, Q.Tail = [1] [2] [3] [4] [5] [99] [100] (b) Antrian Dengan 1 Elemen Q.Head = 0, Q.Tail = [1] [2] [3] [4] [5] [99] [100] (c) Antrian Kosong Gambar 4.4. Antrian Representasi Larik

55 Struktur Data Membuat Antrian Kosong, Representasi Fisik Larik procedure CreateQ(output Q: Antrian) {membuat antrian kosong, representasi fisik larik} {K. Awal: - } {K.Akhir: Q terdefinisi, Q.Head = 0, Q.Tail = 0} Q.Head 0 Q.Tail 0 Algoritma 4.7. Membuat Antrian Kosong, Representasi Fisik Larik 4.8 Fungsi Untuk Memeriksa Antrian Kosong, Representasi Fisik Larik function EmptyQ(input Q: Antrian) boolean {mengembalikan true jika antrian kosong, Q.Head = 0 and Q.Tail = 0} return (Q.Head = 0 and Q.Tail =0) Algoritma 4.8. Memeriksa Antrian Kosong 4.9 Menyisipkan Elemen Antrian, Representasi Fisik Larik Kasus (1) K. Awal Q.Head = 0 Q.Tail = 0 X = [1] [2] [3] [4] [5] [99] [100] K.Akhir Q.Head = 1 Q.Tail = [1] [2] [3] [4] [5] [99] [100]

56 Struktur Data 53 Kasus (2) K. Awal Q.Head = 1 Q.Tail = 3 X = [1] [2] [3] [4] [5] [99] [100] K.Akhir Q.Head = 1 Q.Tail = [1] [2] [3] [4] [5] [99] [100] Kasus (3) K. Awal Q.Head = 1 Q.Tail = 100 X = [1] [2] [3] [4] [5] [99] [100] K.Akhir Q.Head = 1 Q.Tail = 100 Overflow [1] [2] [3] [4] [5] [99] [100] Gambar 4.5. Menyisipkan Elemen Antrian, Representasi Fisik Larik

57 Struktur Data 54 procedure EnQueue(input/output Q: Antrian, input X: TInfo) {menyisipkan X sebagai elemen antrian yang direpresentasi secara fisik menggunakan larik} {K. Awal: Q terdefinisi, X terdefinisi} {K.Akhir: X menjadi elemen antrian} if EmptyQ(Q) then Q.Head 1 Q.Tail 1 Q.ArrQ[Q.Tail] X else if Q.Tail < NMAX then Q.Tail Q.Tail + 1 Q.ArrQ[Q.Tail] X else write ( overflow ) Algoritma 4.9 Menyisipkan Elemen Antrian, Representasi Fisik Larik 4.10 Menghapus Elemen Antrian, Representasi Fisik Larik Ada dua alternatif, yaitu: 1. Elemen bergeser maju, seperti layaknya antrian 2. Head bergeser maju Menghapus Elemen Antrian: Elemen bergeser maju Kasus (1) K. Awal Q.Head = 1 Q.Tail = [1] [2] [3] [4] [5] [99] [100] K.Akhir Q.Head = 1 Q.Tail = 3 X = [1] [2] [3] [4] [5] [99] [100]

BAB 1 PENGANTAR KE STRUKTUR DATA

BAB 1 PENGANTAR KE STRUKTUR DATA Struktur Data - 1 BAB 1 PENGANTAR KE STRUKTUR DATA 1.1 Mengapa Struktur Data Diperlukan? Struktur data adalah cara mengorganisakan data di memori komputer. Bagaimana data diorganisasikan (struktur data)

Lebih terperinci

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Senarai, Traversal Deklarasi global: type TInfo = integer type Address = pointer to Elemen

Lebih terperinci

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB Pertemuan Ke 5 : List Linier (Linked List) Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit

Lebih terperinci

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1 List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/2017 9/25/2017 IF2121/Sem I 2017/2018 1 List Linier List linier: Sekumpulan elemen ber-type sama yang mempunyai keterurutan tertentu

Lebih terperinci

Struktur Data. Queue (Antrian)

Struktur Data. Queue (Antrian) Struktur Data Queue (Antrian) Definisi Queue (Antrian) adalah list linier yang : 1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail) 2. Aturan penyisipan dan penghapusan elemennya didefinisikan

Lebih terperinci

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem List Linier IF2030/Algoritma dan Struktur Data 11/6/2009 FNA+WDS/IF2030/Sem 1 0809 1 List Linier List linier: Sekumpulan elemen ber-type sama yang mempunyai keterurutan tertentu dan setiap elemen terdiri

Lebih terperinci

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian) Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Queue (Antrian) 1 8/25/2015 Pendahuluan Pada bab ini kita akan membahas queue, yang sebenarnya mempunyai ADT hampir sama

Lebih terperinci

Silabus Struktur Data. Bandung 2013

Silabus Struktur Data. Bandung 2013 Silabus Struktur Data Bandung 2013 Silabus u Menjelaskan Varian dan Invarian u Membuat Alur Logika pemrograman u Menerapkan Pengelolaan Array u Memelihara Pekerjaan secara prakds u Menerapkan konsep data

Lebih terperinci

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB Pertemuan Ke 6 : Representasi Fisik List Linier Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit

Lebih terperinci

Modul Ke-1 Pertemuan ke-1 Deskripsi: Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM)

Modul Ke-1 Pertemuan ke-1 Deskripsi: Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM) Modul Ke-1 Pertemuan ke-1 Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM) Deklarasi: const NMAX = 10 type Larik = array[1..nmax] of integer procedure BacaLarik(output A:

Lebih terperinci

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2 VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI Tujuan Pembelajaran 1. Siswa mampu memahami penulisan Tipe data, variabel dan konstanta dalam pascal 2. Siswa mampu menerapkan penggunaan Tipe data,

Lebih terperinci

IKG2A3/ Pemrograman Terstruktur 2

IKG2A3/ Pemrograman Terstruktur 2 IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Representasi Fisik List Linier 1 8/25/2015 Pendahuluan Setelah representasi logic, perlu dilakukan represntasi fisik untuk

Lebih terperinci

LATIHAN UTS Tim Pengajar KU1071 Sem

LATIHAN UTS Tim Pengajar KU1071 Sem LATIHAN UTS Tim Pengajar KU1071 Sem. 1 2010-2011 Soal 1 Buatlah sebuah program prosedural dalam notasi algoritmik yang akan membaca sebuah variabel Grs yang bertipe Garis. Informasi yang terkandung dalam

Lebih terperinci

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

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat STRUKTUR DATA Pengajar Jaidan Jauhari, M.T. Alamat Email jaidan_j@ilkom.unsri.ac.id jaidan_j@yahoo.com Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani

Lebih terperinci

Lab. Teknik Informatika Struktur Data 1

Lab. Teknik Informatika Struktur Data 1 2. POINTER dan SINGLE LINK LIST TUJUAN PRAKTIKUM 1. Praktikan mengetahui tipe struktur data baru yaitu tipe data Pointer. 2. Praktikan menggunakan pointer didalam pembuatan program dan dapat menerapkannya

Lebih terperinci

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan) Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Stack (Tumpukan) 1 8/25/2015 Pendahuluan Pada bab ini kita akan membahas tentang stack (tumpukan) Struktur data stack

Lebih terperinci

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING) PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING) a. Introduction b. Tanpa Boolean c. Dengan Boolean d. Penggunaan dalam Fungsi INTRODUCTION Merupakan algoritma pencarian yang paling sederhana. Proses Membandingkan

Lebih terperinci

MODUL IV PENCARIAN DAN PENGURUTAN

MODUL IV PENCARIAN DAN PENGURUTAN MODUL IV PENCARIAN DAN PENGURUTAN 4.1 Tujuan Tujuan modul IV ini, adalah: Praktikan bisa membuat beberapa program pencarian berdasarkan metode algoritma pencarian Praktikan bisa membuat beberapa program

Lebih terperinci

QUEUE (ANTRIAN) Struktur Data - Queue

QUEUE (ANTRIAN) Struktur Data - Queue QUEUE (ANTRIAN) Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan

Lebih terperinci

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue. Pertemuan 9 Waktu Tujuan Pembelajaran : 135 menit : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue. Substansi Materi : Queue Tabulasi Kegiatan Perkuliahan No Tahap Kegiatan Kegiatan Pengajar

Lebih terperinci

Representasi Logic List Linier

Representasi Logic List Linier IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Representasi Logic List Linier 1 8/25/2015 Pendahuluan Dalam bab ini, akan dibahas mengenai representasi logic dari list

Lebih terperinci

LIST LINIER 1. DEFINISI

LIST LINIER 1. DEFINISI LIST LINIER 1. DEFINISI List linier adalah sekumpulan elemen bertype sama, yang mempunyai keterurutan tertentu, dan setiap elemennya terdiri dari dua bagian, yaitu informasi mengenai elemennya, dan informasi

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) Noor Ifada noor.ifada@if.trunojoyo.ac.id S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi

Lebih terperinci

BAB III QUEUE (ANTRIAN)

BAB III QUEUE (ANTRIAN) BAB III QUEUE (ANTRIAN) 3.1 Pengertian Antrian Antrian (Queue) merupakan kumpulan data yang mana penambahan elemen hanya bias dilakukan pada suatu ujung yaitu rear /tail / belakang, dan pengha[usan dilakukan

Lebih terperinci

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom Runtunan Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom Runtunan terdiri dari satu atau lebih pernyataan Tiap pernyataan dikerjakan secara berurutan sesuai urutannya Urutan instruksi menentukan

Lebih terperinci

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik 1 Definisi Brute Force Brute force : pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah

Lebih terperinci

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1 Pengenalan Algoritma & Struktur Data Pertemuan ke-1 Apa itu Struktur Data? PROGRAM ALGO RITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. Ditulis

Lebih terperinci

LOGO STRUKTUR DATA QUEUE

LOGO STRUKTUR DATA QUEUE STRUKTUR DATA QUEUE Queue (antrian) adalah barisan elemen yang apabila elemen ditambah, maka penambahannya berada pada posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling

Lebih terperinci

1 Pencarian. 1.1 Tinjauan Singkat Larik

1 Pencarian. 1.1 Tinjauan Singkat Larik 1 Pencarian P encarian (searching) merupakan proses yang fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe

Lebih terperinci

Bagian I. Studi Kasus [82] Tanda tangan:

Bagian I. Studi Kasus [82] Tanda tangan: UJIAN TENGAH SEMESTER GANJIL NIM: 2010/2011 dan Struktur Data / CS2014 Nama : HARI : Kamis, 30 Oktober 2009 WAKTU : 110 menit DOSEN : TIM SIFAT : Tutup Buku, No Electronic Device Tanda tangan: Petunjuk:

Lebih terperinci

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com Games and Quiz PT II by Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com Games 1 (a). Penyisipan selalu dilakukan di atas (b). Penghapusan selalu dilakukan pada elemen pertama (c). Penghapusan

Lebih terperinci

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB Pertemuan Ke 3 Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit Informatika I. Tabel/Larik/Array

Lebih terperinci

BAB II STACK Atau TUMPUKAN

BAB II STACK Atau TUMPUKAN BAB II STACK Atau TUMPUKAN List Linear (Daftar Linear). List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya disebut simpul (node). Simpul terdiri

Lebih terperinci

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1 Array (Tabel) Tim Pengajar KU1071 Sem. 1 2009-2010 2009/11/3 TW/KU1071 1 Tujuan Perkuliahan Mahasiswa memahami makna dan kegunaan array (tabel) Mahasiswa dapat menggunakan notasi pendefinisian dan pengacuan

Lebih terperinci

Algoritma Brute Force

Algoritma Brute Force Algoritma Brute Force Definisi Brute Force Brute force adalah sebuah pendekatan yang lempang (straightforward( straightforward) ) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah

Lebih terperinci

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi. FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi. TEORI PENGANTAR: Definisi Fungsi Fungsi adalah sub-program

Lebih terperinci

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL Tim Pengajar KU1071 Sem. 1 2009-2010 1 Overview Notasi Pengulangan 1. Berdasarkan jumlah pengulangan repeat n times aksi 2. Berdasarkan kondisi berhenti repeat aksi

Lebih terperinci

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

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list Universitas Muhammadiyah Sukabumi Artikel Struktur Data Oleh : fahmi fauzi Masukan Judul... 1. STACK DAN QUEUE DENGAN LINKED LIST Pengertian Linked list : sekumpulan elemen bertipe sama, yang mempunyai

Lebih terperinci

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP Ahmad Ayyub Mustofa Jurusan Teknik Informatika ITB, Bandung 40132, email: rekka_zan@students.itb.ac.id Abstraksi Bahasa pemrograman

Lebih terperinci

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan. Struktur Data Struktur Data Setiap data memiliki tipe data, apakah merupakan angka bulat, angka pecahan, atau berupa karakter, dan sebagainya. Jadi, tipe data adalah pengelompokan data berdasarkan isi

Lebih terperinci

Konstruksi Dasar Algoritma

Konstruksi Dasar Algoritma Konstruksi Dasar Algoritma ALGORITMA DAN PEMROGRAMAN [IF6110202] Yudha Saintika, S.T., M.T.I. Sub-Capaian Pembelajaran MK Pendahuluan Instruksi dan Aksi Algoritma merupakan deskripsi urutan pelaksanaan

Lebih terperinci

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama : UJIAN AKHIR SEMESTER GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama : HARI : Rabu, 6 Januari 2010 Tanda tangan: WAKTU : 135 menit DOSEN : TIM SIFAT : Tutup Buku 1 2 3 4 5 T Petunjuk: Periksalah

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi Teks Algoritma ke dalam

Lebih terperinci

Identitas dosen POKOK BAHASAN. Suherman,, ST Address. : Cilegon Mobile : Ym Blog

Identitas dosen POKOK BAHASAN. Suherman,, ST Address. : Cilegon Mobile : Ym Blog Identitas dosen Suherman,, ST Address : Cilegon Mobile : 087 877 486 821 Email Ym Blog : leeput@yahoo.com : leeput : http://leeput.wordpress.com http://suherman628.wordpress.com POKOK BAHASAN LARIK Tujuan

Lebih terperinci

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN PERCABANGAN DAN PENGULANGAN Pada BAB ini akan membahas tentang PERCABANGAN dan PERULANGAN. PERCABANGAN : a) IF THEN b) CASE OF PENGULANGAN: a) REPEAT N TIMES b) REPEAT UNTIL c) WHILE DO d) ITERATE STOP

Lebih terperinci

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

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( ) 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

Lebih terperinci

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024) AlgoritmaBrute Force Desain dan Analisis Algoritma (CS3024) Definisi Brute Force Brute forceadalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah, biasanya didasarkan pada

Lebih terperinci

TIPE, NAMA, DAN NILAI

TIPE, NAMA, DAN NILAI TIPE, NAMA, DAN NILAI Dian Palupi Rini, M.Kom Tipe Dasar Bilangan Logika Nama Tipe adalah boolean (diambil dari nama matematikawan Inggris George Boole). Ranah Nilai : true (benar) dan false (salah). Konstanta

Lebih terperinci

A. Bagian I. Studi Kasus

A. Bagian I. Studi Kasus UJIAN TENGAH SEMESTER GANJIL 2008/2009 NIM: dan Struktur Data / CS2014 Nama : HARI : Rabu, 5 November 2008 WAKTU DOSEN SIFAT : 135 menit : TIM : Tutup Buku Tanda tangan: Petunjuk: Periksalah kelengkapan

Lebih terperinci

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan) ALGORITMA PENCARIAN MINGGU KE: 9 TUJUAN: Mahasiswa dapat memahami masalah pencarian. Mahasiswa dapat memahami algoritma pencarian beruntun. Mahasiswa dapat memahami algoritma pencarian beruntun Versi 1

Lebih terperinci

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

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi : PENGURUTAN Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi : 1. Ascending / menaik Syarat : L[1] L[2] L[3] L[N] 2. Descending / menurun

Lebih terperinci

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

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT PROGRAM STUDI S SISTEM KOMPUTER UNIVERSITAS DIPONEGORO Oky Dwi Nurhayati, ST, MT email: okydn@undip.ac.id Sorting = pengurutan Sorted = terurut menurut kaidah/aturan tertentu Data pada umumnya disajikan

Lebih terperinci

*Algoritma dan Pemrograman 2 UTS *

*Algoritma dan Pemrograman 2 UTS * Algoritma dan Pemrograman 2 UTS * 111201 2 Mei 2016 90 menit Buku Tertutup Gunakan deklarasi larik berikut untuk menyelesaikan soal No. 1 s.d. No. 5 const NMAX = 100 type Larik = array[1..nmax] of integer

Lebih terperinci

BAB VI SEARCHING (PENCARIAN)

BAB VI SEARCHING (PENCARIAN) BAB VI SEARCHING (PENCARIAN) 7. 1 Pencarian Beruntun (Sequential Search) Prinsip kerja pencarian beruntun adalah membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama

Lebih terperinci

Struktur Data. Pertemuan 2

Struktur Data. Pertemuan 2 Pertemuan 2 Tujuan Pembelajaran Mahasiswa mampu menjelaskan konsep struktur data (Pengertian Struktur data, Konsep struktur data, Tipe data sederhana, Deklarasi data dalam bahasa pemrograman. 1. Pengertian

Lebih terperinci

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

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen Pokok Bahasan Pengantar Struktur Data Pengertian Struktur Data Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi

Lebih terperinci

Algoritma Dan Struktur Data II

Algoritma Dan Struktur Data II Algoritma Dan Struktur Data II Array dan Matriks Apa itu Struktur Data? PROGRAM ALGORITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. ditulis

Lebih terperinci

BAB XI Manipulasi Binary Tree

BAB XI Manipulasi Binary Tree www.hansmichael.com - Bab XI. Manipulasi Binary Tree BAB XI Manipulasi Binary Tree 11.1 Insert Node 11.2 Search Node 11.3 Delete Node 11.4 Copy Tree 11.5 Latihan Soal Binary tree seringkali diterapkan

Lebih terperinci

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S. ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN Disusun Oleh : Sakina Mawardah Teknik Informatika Dosen : Asep M. Yusuf, S.T UNIVERSITAS NASIONAL PASIM DAFTAR ISI A. Algoritma Percabangan...

Lebih terperinci

Kata Pengantar... Daftar Isi... Daftar Padan Kata Inggris - Indonesia Pengantar ke Algoritma... 1

Kata Pengantar... Daftar Isi... Daftar Padan Kata Inggris - Indonesia Pengantar ke Algoritma... 1 2 Daftar Isi Kata Pengantar... Daftar Isi... Daftar Padan Kata Inggris - Indonesia... 1. Pengantar ke Algoritma... 1 1.1 Pendahuluan... 1 1.2 Program Komputer dan Algoritma... 4 1.3 Algoritma Merupakan

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-7 (Pengulangan atau Looping [2]) Noor Ifada noor.ifada@if.trunojoyo.ac.id S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Struktur WHILE Struktur REPEAT WHILE vs REPEAT

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-7 (Pengulangan atau Looping [2]) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Struktur WHILE Struktur REPEAT S1 Teknik Informatika-Unijoyo 2 Struktur

Lebih terperinci

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA I. Pendahuluan Algoritma dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami. Algoritma dapat ditulis dalam bahasa natural/bahasa

Lebih terperinci

Pertemuan 7. REVIEW dan QUIS

Pertemuan 7. REVIEW dan QUIS Pertemuan 7 REVIEW dan QUIS 1. Type data dibawah ini, yang tidak termasuk dalam tipe data sederhana tunggal, adalah : a. Boolean d. Integer b. String e. float c. Char 2. ==, =,!=, termasuk dalam operator

Lebih terperinci

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI) BAB IX LINKED LIST (SENARAI BERANTAI) Linked list atau biasa disebut senarai berantai adalah suatu kumpulan data yang saling terhubung antar 1 data dengan data berikutnya. Suatu element (disebut dengan

Lebih terperinci

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List Pertemuan 5 Waktu Tujuan Pembelajaran : 135 menit : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Substansi Materi : Single Linked List, LIFO, FIFO Tabulasi Kegiatan Perkuliahan

Lebih terperinci

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

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD Pertemuan 4 : Definisi & Operasi Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 4b Struktur Data - FMIPA USD - 2003 Hal. 1 Struktur Data PROBLEM ALGORITHM DATA IMPLEMENTATION

Lebih terperinci

Array (Tabel) bagian 2

Array (Tabel) bagian 2 Array (Tabel) bagian 2 Tim Pengajar KU71 Sem. 1 2009-20 2009/11/17 TW/KU71 1 Tujuan Perkuliahan Mahasiswa dapat menggunakan notasi pendefinisian dan pengacuan array dengan benar Mahasiswa memahami proses

Lebih terperinci

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

DASAR PEMROGRAMAN. Institut Teknologi Sumatera DASAR PEMROGRAMAN REVIEW STRUKTUR DASAR, PERCABANGAN, DAN PERULANGAN Institut Teknologi Sumatera TUJUAN KULIAH Mengenalkan konsep dasar pemrograman: dekomposisi problem, modularisasi, rekurens; skill/praktek

Lebih terperinci

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera POINTER STACK DAN QUEUE ALGORITMA DAN STRUKTUR DATA Institut Teknologi Sumatera PRE TEST Apakah yang disebut dengan array? Bagaimana cara deklarasi dan pengacuan dari sebuah array? Apa kekurangan array?

Lebih terperinci

Nama, Tipe, Ekspresi, dan Nilai

Nama, Tipe, Ekspresi, dan Nilai Nama, Tipe, Ekspresi, dan Nilai ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I Sub-Capaian Pembelajaran MK Mahasiswa mampu menerapkan konsep nama, tipe, ekspresi, nilai ke dalam

Lebih terperinci

ALGORITMA & PEMROGRAMAN

ALGORITMA & PEMROGRAMAN ALGORITMA & PEMROGRAMAN Oleh: Tim Algoritma & Pemrograman IF Linked List PENGERTIAN LINKED LIST Salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung,

Lebih terperinci

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit Soal No. 1 Berikut ini adalah program sirkular linked list terurut, lengkapilah bagian titik-titik dengan jawaban yang anda anggap benar. #include #include // enable malloc() and free()

Lebih terperinci

A. Bagian I. Studi Kasus [82]

A. Bagian I. Studi Kasus [82] UJIAN TENGAH SEMESTER GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama : HARI : Rabu, 28 Oktober 2009 WAKTU DOSEN SIFAT : 135 menit : TIM : Tutup Buku Tanda tangan: Petunjuk: Periksalah

Lebih terperinci

Kompleksitas Algoritma

Kompleksitas Algoritma Kompleksitas Algoritma Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi Teks Algoritma ke dalam

Lebih terperinci

Pengurutan (Sorting) Algoritma Pemrograman

Pengurutan (Sorting) Algoritma Pemrograman Pengurutan (Sorting) Algoritma Pemrograman mas.anto72@gmail.com 1 Definisi Sorting /pengurutan proses mengatur sekumpulan obyek menurut urutan atau susunan tertentu. Bentuk susunan/urutan : Ascending menaik/membesar

Lebih terperinci

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI) BAB IX LINKED LIST (SENARAI BERANTAI) Double Linked List Double Linked List adalah suatu linked list yang mempunyai penunjuk yaitu penunjuk ke data sebelumnya dan berikutnya. Perhatikan gambar di bawah

Lebih terperinci

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs. Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks By. Rita Wiryasaputra, ST., M. Cs. ritasaputra@gmail.com Kriteria Unjuk Kerja Algoritma Pemrograman 1 Tugas Terakhir (15): Buatlah portofolio Pengidentifikasian

Lebih terperinci

Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

Larik/Array ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I Larik/Array ALGORITMA DAN PEMROGRAMAN [IS11010] Dosen: Yudha Saintika, S.T., M.T.I Sub-Capaian Pembelajaran MK Mahasiswa mampu menerapkan konsep larik dalam program. Peta Capaian Pembelajaran MK We Are

Lebih terperinci

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF BAB I PENGENALAN STRUKTUR DATA ARRAY STATIS DATA 1. Kumpulan dari nilai-nilai. 2. Bagian terkecil dari suatu informasi 3. Data bersifat JAMAK. STRUKTUR DATA

Lebih terperinci

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e 03 LINKED LIST Slide 0 voice Pada perkuliahan ini kita akan membahas topik linked list atau senarai berkait. Slide 1 voice Terdapat tujuh bilangan bulat yang nilainya terurut secara menaik (ascending)

Lebih terperinci

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data) ARRAY DINAMIS Sebelumnya telah dijelaskan mengenai variable bertipe array (array statis), suatu tipe data yang bersifat statis (urutan dan ukuran sudah pasti). Kelemahan dari array statis adalah penggunaan

Lebih terperinci

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

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok: Pengurutan (Sorting) Pengurutan adalah proses mengatur sekumpulan obyek menurut urutan atau susunan tertentu. Urutan obyek tersebut dapat menaik atau menurun. Bila N obyek disimpan dalam larik L, maka

Lebih terperinci

PEMILIHAN. Runtunan. Dian Palupi Rini, M.Kom

PEMILIHAN. Runtunan. Dian Palupi Rini, M.Kom PEMILIHAN Dian Palupi Rini, M.Kom Runtunan Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya, masalah yang akan diselesaikan memiliki beberapa alternatif pelaksanaan aksi. Suatu aksi

Lebih terperinci

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting) Kuliah ke : 4 Algoritma & Stuktur Data Pengurutan (Sorting) Pengurutan adalah proses mengatur sekumpulan obyek menurut urutan atau susunan tertentu. Urutan obyek tersebut dapat menaik atau menurun. Bila

Lebih terperinci

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Variasi List Linier 1 8/25/2015 Pendahuluan Pada Bab ini kita akan membahas tentang beberapa di antara variasi list linier,

Lebih terperinci

STRUKTUR DATA Pertemuan 1 s.d 8

STRUKTUR DATA Pertemuan 1 s.d 8 STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi

Lebih terperinci

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR 1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode

Lebih terperinci

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM ANALISIS ALGORITMA Analisis Masalah dan Running Time Disusun Oleh: Adam Mukharil Bachtiar Teknik Informatika UNIKOM adfbipotter@gmail.com AGENDA PERKULIAHAN DEFINISI MASALAH f x = a 0 + a n cos nπx +

Lebih terperinci

STRUKTUR DASAR ALGORITMA

STRUKTUR DASAR ALGORITMA STRUKTUR DASAR ALGORITMA Tujuan Mahasiswa mampu memecahkan masalah dalam sebuah algoritma pemecahan masalah menggunakan struktur pemilihan dan pengulangan. Mahasiswa mengetahui struktur program bahasa

Lebih terperinci

.::BAB II.::MENGENAL PASCAL

.::BAB II.::MENGENAL PASCAL .::BAB II.::MENGENAL PASCAL Pascal adalah bahasa pemrograman terstruktur yang membedakan blok-blok pendeklarasian tipe, variable dan penulisan kode program. Pascal memiliki keunggulan untuk dipelajari

Lebih terperinci

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul struktur data fd [page 1 of 7] SENARAI BERANTAI Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah kumpulan linier sejumlah data. Contohnya seperti daftar belanja harian, dimana setiap

Lebih terperinci

ALGORITMA DAN PEMROGRAMAN

ALGORITMA DAN PEMROGRAMAN ALGORITMA DAN PEMROGRAMAN MATERI 3 1 2 Macam macam struktur algoritma : RUNTUNAN (SEQUENCE) PEMILIHAN (SELECTION) PENGULANGAN (REPETITION) 3 RUNTUNAN Runtunan merupakan struktur algoritma paling dasar

Lebih terperinci

Algoritma dan Struktur Data

Algoritma dan Struktur Data 20/11/2014 Algoritma dan Struktur Data Algoritma Pemrograman Bekti Wulandari, M.Pd Kelas B TE 2014 Program Program: sederetan perintah-perintah yang harus dikerjakan oleh komputer untuk menyelesaikan masalah.

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-3 (Tipe Data dan Nama) 1 Sub Pokok Bahasan Pendahuluan Tipe Dasar Tipe Bentukan Nama 2 Pendahuluan Tipe adalah pola representasi data dalam komputer Tipe data dapat dikelompokkan

Lebih terperinci

MODUL 1. Struktur Bahasa PASCAL secara umum

MODUL 1. Struktur Bahasa PASCAL secara umum MODUL 1 Struktur Bahasa PASCAL secara umum Pascal mempunyai struktur sebagai berikut: 1. Bagian Judul Program 2. Bagian Deklarasi e a. Deklarasi tipe data (TYPE) b. Deklarasi variabel (VAR) c. Deklarasi

Lebih terperinci

algoritma & pemrograman

algoritma & pemrograman algoritma & pemrograman materi pengajaran algoritma & pemrograman I (IF-185) 1. Pendahuluan 4. Procedure & Function - Bahasa Pemrograman Pertemuan : 3x - Membuat program / algoritma Pertemuan : 1x 5. UTS

Lebih terperinci

Array. Teknik Informatika Politeknik Negeri Batam

Array. Teknik Informatika Politeknik Negeri Batam Array Teknik Informatika Politeknik Negeri Batam Pendahuluan Array Array A 1 158 2 157 3 162 4 169 5 172 6 155 7 170 8 163 Isi A[1] adalah 158 Isi A[2] adalah 157 Isi A[8] adalah 163 Struktur data statik

Lebih terperinci

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Pendahuluan Struktur Data. Nisa ul Hafidhoh Pendahuluan Struktur Data Nisa ul Hafidhoh nisa@dsn.dinus.ac.id 08156114760 Tujuan Mahasiswa dapat melakukan pemrograman dalam skala menengah dengan memanfaatkan struktur data internal yang kompleks dan

Lebih terperinci