Anda di halaman 1dari 53

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. H.M Deitel, P.J Deitel, Small Java How to Program-sixth
Edition, Pearson Prentice Hall, 2005
2. Elliot B. Koffman, Paul A.T. Wolfgang, Objects, Abstraction,
Data Structures and Design Using Java, John Wiley &
Sons.Inc, 2005
3. Mark Allen Weiss, Data Structures & Algorithm Analysis in
Java, Addison-Wesley, 1999
4. Moh.Sjukani, 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
FIRST INFO LINK INFO LINK INFO LINK INFO LINK
22 28 66 63

• Ada 4 simpul no (1) s.d. (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
FIRST INFO 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 RIGHT prev
INFO

next

head tail
2. Linear Double Linked List

RIGHT

RIGHT
RIGHT

RIGHT
LAST

INFO

INFO
INFO

INFO
LEFT

LEFT
LEFT

LEFT
FIRST

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
FIRST INFO LINK INFO LINK INFO LINK INFO LINK
22 28 66 63
3. Circular Single Linked List
LAST
FIRST INFO 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 RIGHT prev
INFO

next

head tail
4. Circular Double Linked List

RIGHT

RIGHT
RIGHT

RIGHT
LAST

INFO

INFO
INFO

INFO
LEFT

LEFT
LEFT

LEFT
FIRST

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/right
– Linked List: artinya node-node tersebut saling
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 awal.b (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 awal.b (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

Anda mungkin juga menyukai