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 dengan notasi khusus 2. notasi mudah dimengerti 3. notasi dapat diterjemahkan menjadi sintaks suatu bahasa pemrograman Struktur Data ….. model logika/matematik yang secara khusus mengorganisasi data Contoh Struktur Data ….. Array A satu dimensi : 8 indeks (1 s/d 8) dan data 1, 7, 18 dst. 1 7 18 03 69 24 08 70 1 2 3 4 5 6 7 8 Contoh Struktur Data ….. Ar ray B dua di mensi (matr iks) : - j uml ah bari s 2, kol om 3 - d ata 18, 03, 69, 24, 08, 70. 1 2 3 1 18 03 69 2 24 08 70 Contoh Struktur Data ….. List Berkait / Senarai Contoh Struktur Data ….. Tumpukan dengan tiga data ( 18, 03, dan 69 yang mer upakan posisi terakhir / TOP ) 69 03 18 << TOP Contoh Struktur Data ….. Pohon dengan akar A A B C D E F Struktur Data ….. Tempat Penyimpanan Data Operasi terhadap data • • Traversal (Traversing) : mengunjungi setiap elemen SD Pencarian (Searching) : menemukan elemen/lokasi pada SD • Penyisipan (Inserting) : menambah elemen baru pada SD • Penghapusan (Deleting) : menghapus elemen dari SD Kita lanjutkan untuk yang satu ini ….. Struktur Data : Array / Larik Tujuan Membahas struktur data yang paling sederhana dan mudah pengoperasiannya, yaitu array / larik. Definisi struktur data yang mengacu pada sekumpulan elemen yang diakses melalui indeks KELEBIHAN & KEKURANGAN Array / Larik • KELEBIHAN - Struktur Data paling mudah - Memori ekonomis, bila semua elemen terisi - Waktu akses sama ke setiap elemen KEKURANGAN - Boros memori jika banyak elemen yang tidak digunakan - Struktur Data Statis CONTOH PROSES Array / Larik ALGORITMA For Indeks 1 to N do PROSES LARIK Endfor Mengisi elemen larik dengan 0 (inisialisasi) Mengisi elemen larik dari piranti masukan Mencetak keluaran elemen larik ke piranti INISIALISASI Array / Larik ALGORITMA For Indeks 1 to 8 do A[Indeks] = 0 Endfor 0 0 0 0 0 0 0 0 INPUT ELEMEN Array / Larik ALGORITMA For Indeks 1 to 8 do Input A[Indeks] Endfor 1 3 5 7 2 9 ?1 ?3 ?5 4 7 CETAK ELEMEN Array / Larik ALGORITMA For Indeks 1 to 8 do Print A[Indeks] Endfor 2 7 4 9 7 5 13 1 3 5 7 2 9 4 7 Array vs Struct • • Array : penampung sejumlah data sejenis (yang memiliki type data yang sama) dengan menggunakan satu identifier Elemen array dapat diakses dengan menggunakan index, dari nol sampai n-1 (n: jumlah elemen array) Contoh : int x[5]; printf(“%d”,x[3]); Array vs Struct • • Struct: struktur data yang menggabungkan beberapa data dengan tipe yang berbeda, tetapi berkaitan Elemen struct dapat diakses dengan menggunakan dot operator dan arrow operator. Struct Gabungan beberapa variable dengan tipe yang berbeda 学籍番号 学籍番号 名前学籍番号 名前 生年月日 名前 生年月日 nama 体重生年月日 体重 Nilai math 身長体重 Nilai biology 身長 身長 Nilai geography Nilai English Nilai Bhs.Indonesia Nilai rata-rata struct NILAI { char nama[100]; float math; float biology; float geography; float english; float bi; float ratarata; }; struct NILAI p[10]; Deklarasi struct Gabungan beberapa variable dengan tipe yang berbeda Struct 学籍番号 学籍番号 名前学籍番号 名前学籍番号 生年月日 名前学籍番号 生年月日 名前nama 体重生年月日 名前 体重生年月日 Nilai math 身長体重 Nilai biology 生年月日 身長体重 Nilai geography 身長体重 身長Nilai English 身長 Nilai Bhs.Indonesia Nilai rata-rata struct NILAI { char nama[100]; float math; float biology; float geography; float english; float bi; float ratarata; } p[10]; Beberapa Jenis Struktur Data 1. Array 1. Linear List 2. Stack 3. Queue 2. List 1. Connected List 2. Circular List 3. Doubly-linked List 4. Multi list structure 3. Tree Structure 1. Apa ? 2. Bagaimana cara implementasinya ? Linear List Apakah Linear List itu ? • Sekumpulan elemen yang diatur secara terurut x[1], x[2],L , x[k − 1], x[k ], x[k + 1], L , x[n] • Linear List tidak sama dengan Connected-List Operasi pada Linear List No. Operasi 1 Menambahkan sebuah elemen sebelum elemen ke-k 2 Menghapus elemen ke-k 3 Membaca/menulis isi elemen ke-k 4 Mencari elemen dengan key tertentu 5 Menggabungkan beberapa list menjadi satu 6 Memecah sebuah list ke beberapa buah 7 Mengcopy sebuah list 8 Menghitung banyaknya elemen dalam sebuah list List, Stack & Queue • Tidak semua operasi list diperlukan pada setiap program ▫ Penentuan struktur data didasarkan pada operasi yang diperlukan saja agar bisa berjalan dengan efisien • Pada sebuah Linear List, penyisipan dan penghapusan elemen dapat dijalankan di sebarang posisi • Bentuk khusus linear list: Penambahan elemen dan penghapusannya dilakukan di posisi terdepan atau posisi terbelakang saja Stack dan Queue juga merupakan salah satu jenis list Stack Queue List, Stack & Queue • Pada sebuah Linear List, penyisipan dan penghapusan elemen dapat dijalankan di sebarang posisi • Penambahan dan penghapusan elemen pada stack/queue dilakukan di posisi terdepan atau posisi terbelakang saja List 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 Stack Queue Stack Apakah Stack itu ? Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH 1 top== bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH 2 1 top bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack 3 top 2 PUSH 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack 4 top 3 PUSH 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack top 5 PUSH 4 3 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi PUSH : Menambahkan elemen pada sebuah stack top 6 5 PUSH 4 3 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack top 6 5 POP 4 3 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack top 5 POP 4 3 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack POP 4 top 3 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack 3 POP top 2 1 bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack POP 2 1 top bottom Apakah Stack itu ? • Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan • Yang dihapus adalah elemen yang paling terakhir ditambahkan • Nama lain: LIFO (Last In First Out) • Operasi POP : Menghapus sebuah elemen dari sebuah stack POP 1 top==bottom Apakah Stack itu ? PUSH dan POP Stack Overflow & Stack Underflow • Stack Overflow Menambahkan data pada sebuah stack yang telah penuh • Stack Underflow Menghapus data dari sebuah stack yang sudah kosong Apakah Queue itu ? Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list ENQUEUE 1 front==rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list 1 2 ENQUEUE front rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list ENQUEUE 1 front 2 3 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list ENQUEUE 1 front 2 3 4 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list ENQUEUE 1 front 2 3 4 5 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi ENQUEUE: menambahkan data pada sebuah list ENQUEUE 1 front 2 3 4 5 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 1 front 2 3 4 5 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 2 front 3 4 5 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 3 front 4 5 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 4 front 5 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 5 front 6 rear Apakah Queue itu ? • Penambahan data dilakukan pada sebuah ujung sebuah list, sedangkan penghapusan data dilakukan pada ujung yang lain • Data yang dihapus adalah data yang paling awal ditambahkan • Nama lain: FIFO (First In First Out) • Operasi DEQUEUE: menghapus data pada sebuah list DEQUEUE 6 front==rear Animasi Queue ENQUEUE dan DEQUEUE • Gambarkan kondisi stack setelah dilakukan operasi berikut: Latihan 1 push(10); push(2); pop(); push(20); pop(); push(15); push(5); 2 10 10 • Gambarkan kondisi queue setelah dilakukan operasi berikut: Latihan 2 enqueue(10); enqueue(32); 10 enqueue(5); dequeue(); enqueue(10); dequeue(); dequeue(); 10 32