linked list - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/downloads/files/65672... ·...

34
LINKed LIST

Upload: others

Post on 05-Aug-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

LINKed LIST

Page 2: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

PENGENALAN

• List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel.

• Setiap elemen akan ditambahkan saat dibutuhkan, tidak dialokasikan dengan tempat tertentu dari awal.

Page 3: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

DEFINISI

• suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer.

• Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu:

• INFO.

• NEXT (link field/next pointer field).

Page 4: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

CONTOH

Page 5: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

KERUGIAN

• Dua hal yang menjadi kerugian, yaitu:

• Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

• Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.

Page 6: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

KEUNTUNGAN

• Jenis data yang berbeda dapat di-

link.

• Operasi REMOVE atau INSERT

hanya dilakukan dengan mengubah

pointer-nya saja .

Page 7: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Operasi yang dapat terjadi

• NODE (P), artinya node yang ditunjuk oleh pointer P

• INFO (P), artinya nilai INFO dari node yang ditunjuk pointer P

• NEXT (P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh pointer P

Page 8: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Tanpa logika linked list

• INSERT E

• DELETE C

• INSERT F

• DELETE E

• INSERT G

Page 9: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

CONTOH

• Misal…

membuat sebuah elemen data nilai mahasiswa yang terdiri dari NRP, nama, dan nilai, maka representasinya adalah sebagai berikut:

94410

NRP

iffa

nama

A

nilai next Penunjuk

ke elemen

berikutnya

Page 10: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Algoritma data • Elemen dalam bahasa algoritma, seperti berikut :

type nilaiMatKul :

< NRP : string,

nama : string,

nilai : string >

• Elemen ditambah dengan pengait/penunjuk:

type elemen :

< elmt : nilaiMatKul,

next : elemen >

• Deklarasi listnya sebagai berikut:

type list :

< first : elemen >

Page 11: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

JENIS LINK LIST • Single Linked List

dapat juga ditulis NULL

• Double Linked List

10 15 20

10 15 20

head

head

prev next

Page 12: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

OPERASI PADA LIST

Page 13: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

MEMBUAT ELEMEN LINKED LIST

• Membuat suatu elemen linked list berarti memesan tempat di memori untuk menyimpan sebuah list.

Page 14: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

PENAMBAHAN ELEMEN POSISI AWAL

• Penambahan elemen di posisi awal adalah menambahkan data baru pada posisi awal, sehingga data baru tersebut akan menjadi awal.

• Ada 2 hal yang harus diperhatikan, yaitu :

• kondisi linked list sedang kosong, atau

• kondisi linked list sudah mempunyai elemen.

Page 15: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Kondisi Linked List Sedang Kosong

• Ketika linked list masih kosong, maka variable awal dan akhir akan diisi dengan variable baru.

Page 16: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

NULL

head

1. List masih kosong (head=NULL)

2. Masukkan data baru, misal 10

10

head

Page 17: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Kondisi Linked List ada Elemen.

• Proses penambahannya adalah dengan mengisikan field next milik elemen baru dengan posisi awal linked list, kemudian posisi awal berubah ke posisi baru.

Page 18: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

15 10

head baru

15 10

head

Masukkan data baru dari depan, misal 15

10

head

15

baru

Page 19: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Penambahan Elemen Di Posisi Terakhir

• Penambahan data baru dimana data baru disimpan di posisi terakhir.

• Setelah proses penambahan selesai, maka variabel menunjuk ke data baru tersebut.

Page 20: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

10 15

bantu head

10 15

head

baru

Masukkan data baru dari belakang, misal 15

10

head

15

baru

Page 21: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

15 21

bantu

10

15

head baru

Masukkan data baru dari belakang, misal 21

21

baru

10

head

10 15

head

21

Page 22: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

MENGHAPUS ELEMEN LIST

• Menghapus elemen list berarti menghilangkan alokasi memori sebuah list yang telah ada di memori.

• Fungsi: agar data yang tidak diperlukan benar-benar terhapus di memori sehingga penggunaan memori dapat optimal karena data-data yang tidak diperlukan dihilangkan.

Page 23: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

PENGHAPUSAN DATA AWAL

• Penghapusan elemen pertama (awal), menyebabkan variabel awal akan berpindah ke elemen data berikutnya.

• 3 kondisi yang perlu diperhatikan yaitu:

• kondisi linked list masih kosong

• kondisi linked list hanya memiliki 1 data

• kondisi linked list yang memiliki data lebih dari 1 elemen.

Page 24: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

• Kondisi linked list masih kosong

• Pada kondisi ini proses penghapusan tidak bisa dilakukan.

• Kondisi linked list hanya memiliki 1 data

• Langkah yang dilakukan adalah menghapus data yang ada di posisi awal kemudian akhir dan awal di-NULL-kan.

Page 25: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

• Kondisi linked list memiliki data lebih dari 1 data:

• Alamat data awal diisikan ke suatu variabel pembantu (phapus).

• Setelah itu pindahkan awal ke data berikutnya.

• Setelah itu hapus/hancurkan data di posisi phapus.

Page 26: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

10 15

head

21

15

head

21

Proses penghapusan data 10 dari depan

Page 27: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

• Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer.

• Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan menjadi head baru (data terdepan yang baru).

Page 28: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

PENGHAPUSAN DATA AKHIR • Penghapusan data akhir adalah proses

menghilangkan/menghapus data yang ada di

posisi terakhir.

• Ada 3 kondisi yang harus diperhatikan ketika

akan melakukan proses penghapusan data akhir

yaitu:

• Kondisi linked list masih kosong,

• Kondisi linked list hanya berisi 1 data, dan

• Kondisi linked list berisi data lebih dari 1

buah.

Page 29: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

10 15

head

21

Proses menghapus data 34 dari belakang

34

10 15

head

21 34

bantu hapus

10 15

head

21

bantu

bantu

Page 30: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

dengan logika linked list

• INSERT E

• DELETE C

• INSERT F

• DELETE E

• INSERT G

Page 31: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Pembacaan Linked List No. Info Link

1 Santi 0

2 Ani 4

3 6

4 Budi 5

5 Rudi 0

6 9

7 Karin 1

8 Dita 7

9 0

1

Avail

2

Page 32: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Latihan • Dilakukan Insert “Leni”

• Dilakukan Delete “Budi”

• Dilakukan Insert “Cita”

• Dilakukan Delete “Dita”

Page 33: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

latihan 2

Page 34: LINKed LIST - tissa.staff.gunadarma.ac.idtissa.staff.gunadarma.ac.id/Downloads/files/65672... · • Double Linked List 10 15 20 10 15 20 head head prev next . OPERASI PADA LIST

Latihan 2 • Dilakukan Insert “Dimas”

• Dilakukan Delete “Galih”

• Dilakukan Insert “Marsha”

• Dilakukan Delete “Jeni”