By Sri Rezeki Candra Nursari 3 sks Algoritma Struktur Data
Materi Pengantar Struktur Data Abstract Data Type (ADT) Rekursif : Fibonacci Sorting (Selection, Insertion, Bubble, Shell, Merge, Quick) Struktur Data Linier (Linked List, Stack, Queu) Struktur Data Hirarki (Tree, Graph, Hash Tables) Search (Sequential, Fibonacci, Interpolation, Binary)
ALGORITMA STRUKTUR DATA - 3 sks Literatur : 1 HM Deitel, PJ Deitel, Small Java How to Program-sixth Edition, Pearson Prentice Hall, 2005 2 Elliot B Koffman, Paul AT Wolfgang, Objects, Abstraction, Data Structures and Design Using Java, John Wiley & SonsInc, 2005 3 Mark Allen Weiss, Data Structures & Algorithm Analysis in Java, Addison-Wesley, 1999 4 MohSjukani, Algoritma & Struktur Data dengan C, C++ dan Java, Mitra Wacana Media, Agustus 2005 5 Andri Kristanto, Struktur Data dengan C, Graha Ilmu, 2003 6 Bambang Wahyudi, Pengantar Struktur Data dan Algoritma, Andi, 2004 7 Ema Utami, Struktur Data, Graha Ilmu, 2007 8 Yatini B, Indra, Pemrograman Terstruktur, J&J Learning Yogyakarta, 2001 9 Wirth, Niklaus, Algorithmic + Data Structures Programs, Prentice-Hall, 1976 10 Thompson Susabda Ngoen, Algoritma dan Struktur Data Bahasa C, Mitra Wacana Media, 2009
Linked List Linked List (List Berkait) biasa juga disebut list List termasuk kedalam himpuan dinamik, tetapi berbeda dengan stack dan queue Pada ada peraturan : Penyisipan elemen Diawal Ditengah Diakhir Penghapusan elemen Diawal Ditengah Diakhir
Linked List List digunakan untuk menyimpan sekumpulan data yang bertipe sama (berupa: bilangan, string) Jumlah elemen list tidak terbatas, tetapi secara fisik hanya dibatasi oleh jumlah memori yang tersedia Sebuah list akan mempunyau 2 bagian, yaitu bagian: Head (Kepala) Yang terutama digunakan untuk menyimpan lamat elemen pertama atau elemen terakhir sebuah list Badan List yang berisi kumpulan elemen list
Linked List Linked list merupakan Array Dinamis Variabel bertipe Array merupakan suatu tipe data yang bersifat statis dimana ukuran dan urutannya sudah pasti Selain itu ruang memori yang dipakai olehnya tidak dapat dihapus bila variabel bertipe array tersebut sudah tidak digunakan lagi pada saat program dijalankan
Linked List Linked list adalah sejumlah obyek yang di link atau dihubungkan satu dengan yang lainnya sehingga membentuk suatu list Obyek adalah merupakan gabungan beberapa elemen data (variabel) yang dijadikan satu kelompok atau structureatau recordyang dibentuk dengan perintah struct Tiap-tiap elemen dapat memiliki tipe data tersendiri yang berbeda dengan tipe data lemen lain Untuk menghubungkan obyek satu dengan obyek lainnya, diperlukan paling tidak sebuah variabel yang bertipe pointer Variabel pointer tersebut merupakan salah satu variabel dalam struktur obyek
Linked List Struktur Linked List terbagi menjadi 4 macam, yaitu : 1 Linear Single Linked List 2 Linear Double Linked List 3 Circular Single Linked List 4 Circular Double Linked List
1 Linear Single Linked List Merupakan linked list lurus dengan pointer tunggal Dalam struktur simpul hanya ada satu elemen/field/variabel yang bertipe pointer yang isinya adalah alamat sim[ul berikutnya atau next node
1 Linear Single Linked List LAST INFO FIRST LINK INFO LINK INFO LINK INFO LINK 22 28 66 63 Ada 4 simpul no (1) sd (4) Setiap simpul (record) terdiri dari dua elemen (field) Field INFO bertipe integer untuk menyimpan nilai 22 Field LINK bertipe pointer untuk menyimpan alamat simpul Simpul pertama no (1) ditunjuk oleh pointer FIRST Smpul terakhir no (4) ditunjuk oleh pointer LAST
1 Linear Single Linked List LAST INFO FIRST LINK INFO LINK INFO LINK INFO LINK 22 28 66 63 Prosesnya 1 Inisialisasi, yaitu persiapan pembuatan Linked List 2 Membuat simpul awal 3 Membuat simpul baru 4 Menambahkannya (Insert) kedalam linked list
1 Linear Single Linked List Prosesnya 1 Inisialisasi, yaitu persiapan pembuatan Linked List
1 Linear Single Linked List Prosesnya 2 Membuat simpul awal
1 Linear Single Linked List Prosesnya 3 Membuat simpul Baru
1 Linear Single Linked List Prosesnya 4 Menambahkannya (Insert) kedalam linked list
Contoh : Linear Single Linked List (versi 1)
Contoh : Linear Single Linked List (versi 1)
Contoh : Linear Single Linked List (versi 1)
Contoh : Linear Single Linked List (versi 2)
Contoh : Linear Single Linked List (versi 2)
Contoh : Linear Single Linked List (versi 2)
2 Linear Double Linked List LEFT INFO RIGHT prev A next head tail
2 Linear Double Linked List FIRST LEFT INFO RIGHT LEFT INFO RIGHT LEFT INFO RIGHT LAST LEFT INFO RIGHT 22 28 63 66 Linear Double Linked List adalah doubly linked list lurus dengan pointer ganda, yaitu ada dua buah pointer Jadi dalam struktur simpul ada dua elemen/field/variabel yang bertipe pointer Yang pertama menunjuk atau berisi alamat simpul sebelumnya atau perivious node, dan yang kedua menunjuk simpul berikutnya atau next node
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 1 Inisialisasi linked list 2 Pembuatan sebuah simpul 3 Pembuatan simpul awal 4 Melakukan insert kanan / sisip elemen terakhir 5 Melakukan insert kiri / sisip elemen awal 6 Melakukan insert tengah / sisip elemen tengah 7 Melakukan delete kanan / hapus elemen akhir 8 Melakukan delete kiri / hapus elemen awal 9 Melakukan delete tengah / hapus elemen tengah
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 1 Inisialisasi linked list 2 Pembuatan sebuah simpul
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 3 Pembuatan simpul awal 4 Melakukan insert kanan / sisip elemen terakhir
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 5 Melakukan insert kiri / sisip elemen awal 6 Melakukan insert tengah / sisip elemen tengah
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 7 Melakukan delete kanan / hapus elemen akhir 8 Melakukan delete kiri / hapus elemen awal
2 Linear Double Linked List Proses DLLL (Double Linked List Linear), adalah 7 Melakukan delete tengah / hapus elemen tengah
3 Circular Single Linked List LAST INFO FIRST LINK INFO LINK INFO LINK INFO LINK 22 28 66 63
3 Circular Single Linked List LAST INFO FIRST LINK INFO LINK INFO LINK INFO LINK 22 28 66 63 Circular Single Linked List adalah Single List List dimana link simpul terakhir bukan diisi dengan null, melainkan diisi dengan alamat simpul pertama yaitu simpul yang ditunjuk oleh pointer FIRST, sehingga menciptakan efek melingkar sesuai arah jarum jam
3 Circular Single Linked List Proses SLLC (Single Linked List Circular), adalah 1 Pembuatan sebuah simpul 2 Pembuatan simpul awal 3 Melakukan insert kanan / sisip elemen terakhir 4 Melakukan insert kiri / sisip elemen awal 5 Melakukan insert tengah / sisip elemen tengah 6 Melakukan delete kanan / hapus elemen akhir 7 Melakukan delete kiri / hapus elemen awal 8 Melakukan delete tengah / hapus elemen tengah
3 Circular Single Linked List Proses SLLC (Single Linked List Circular), adalah 1 Pembuatan sebuah simpul 2 Pembuatan simpul awal
3 Circular Single Linked List Proses SLLC (Single Linked List Circular), adalah 3 Melakukan insert kanan / sisip elemen terakhir 4 Melakukan insert kiri / sisip elemen awal
3 Circular Single Linked List Proses SLLC (Single Linked List Circular), adalah 5 Melakukan insert tengah / sisip elemen tengah 6 Melakukan delete kanan / hapus elemen akhir
3 Circular Single Linked List Proses SLLC (Single Linked List Circular), adalah 7 Melakukan delete kiri / hapus elemen awal 8 Melakukan delete tengah / hapus elemen tengah,,,,
4 Circular Double Linked List LEFT INFO RIGHT prev A next head tail
4 Circular Double Linked List FIRST LEFT INFO RIGHT LEFT INFO RIGHT LEFT INFO RIGHT LAST LEFT INFO RIGHT 22 28 63 66 Circular Double Linked List adalah doubly linked list dimana pointer RIGHT simpul paling kanan berisi alamat simpul paling kiri, dan pointer LEFT simpul paling kiri berisi alamat simpul paling kanan, sehingga menciptakan efek melingkar baik menurut arah jarum jam maupun arah kebalikannya
4 Circular Double Linked List Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field/elemen, yaitu 1 field pointer yang menunjuk pointer berikutnya (next/right), 1 field menunjuk pointer sebelumnya (prev/left), serta sebuah field yang berisi data untuk node tersebut Double Linked List Circular pointer next dan prev nya menunjuk ke dirinya sendiri secara circular
4 Circular Double Linked List Pengertian Double Linked List Circular Double: artinya field pointernya terdiri dari dua buah dan dua arah, yaitu prev/left dan next/righ Linked List: artinya node-node tersebut salin terhubung satu sama lain Circular: artinya pointer next dan prev-nya menunjuk ke dirinya sendiri
4 Circular Double Linked List Node Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya dan ke node sebelumnya Untuk pembentukan node baru, mulanya pointer next/right dan prev/left akan menunjuk ke dirinya sendiri Jika sudah lebih dari satu node, maka pointer prev/left akan menunjuk ke node sebelumnya, dan pointer next/right akan menunjuk ke node sesudahnya
4 Circular Double Linked List Head Dibutuhkan satu buah variabel pointer : head Head akan selalu menunjuk pada node pertama
4 Circular Double Linked List Fungsi untuk mengetahui kosong tidaknya DLLC (Double Linked List Circular) Penamahan elemen/data didepan/diawal Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 1 Pembuatan sebuah simpul 2 Pembuatan simpul awalb (simpulyang sudah dibuat, dijadikan sebagai simpul awal) 3 Melakukan insert kanan / sisip elemen terakhir 4 Melakukan insert kiri / sisip elemen awal 5 Melakukan insert tengah / sisip elemen tengah 6 Melakukan delete kiri / hapus elemen awal 7 Melakukan delete kanan / hapus elemen akhir
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 1 Pembuatan sebuah simpul
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 2 Pembuatan simpul awalb (simpulyang sudah dibuat, dijadikan sebagai simpul awal)
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 3 Melakukan insert kanan / sisip elemen terakhir
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 4 Melakukan insert kiri / sisip elemen awal
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 5 Melakukan insert tengah / sisip elemen tengah
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 6 Melakukan delete kiri / hapus elemen awal
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 7 Melakukan delete kanan / hapus elemen akhir
4 Circular Double Linked List Proses DLLC (Double Linked List Circular), adalah 8 Melakukan delete tengah / hapus elemen Tengah