List Linear :
Tujuan Instruksional
Mahasiswa mampu :
Memahami struktur data linked list Memahami cara pengoperasian struktur data linked list Mengimplementasikan struktur data linked list
Topik
Bentuk dasar linked list deklarasi class linked list Tambah node Hapus node Penyisipan node ADT Linked List
Ketika masih ada satu node maka kedua pointer (next dan prev) akan menunjuk ke NULL) Double linked list dapat diakses dari dua arah :
1. Dari depan ke belakang (head ke tail) 2. Dari belakang ke depan (tail ke head)
null null
next
Double Representation
class Node2P { int data; // data Node2P next; // pointer next Node2P prev; // pointer prev } Ilustrasi : next data prev
Penjelasan: Pembuatan class bernama Node2P, yang berisi variabel data bertipe Object dan 2 variabel pointer bertipe Node2P yaitu : next dan prev. Field data : digunakan untuk menyimpan data/nilai pada linked list. Field pointer : digunakan untuk menyimpan alamat node berikutnya.
Alokasi Simpul
Node2P baru = new Node2P(10);
10
head
NULL
tail
12
(2)isEmpty
Digunakan untuk mengetahui linked dalam kondisi kosong. Kondisi kosong : jika size = 0 atau jika head=tail=null.
boolean isEmpty() { return size==0; }
(3) size
Digunakan untuk mengetahui banyak node pada linked list. Size akan bertambah 1 setiap ada node baru yang ditambahkan pada linked list. Size akan berkurang 1 setiap ada penghapusan node.
int size() { return size; }
(4) Penambahan
Dibedakan menjadi : 1. Penambahan dari depan 2. Penambahan dari belakang 3. Penambahan setelah node tertentu 4. Penambahan sebelum node tertentu
16
Insert First
1. Baru.next = head
19
Insert First
2. head.prev = Baru
20
Insert First
3. head = baru
21
Insert Last
Kondisi awal linked list :
Terdapat 2 node
24
Insert Last
1. Baru.prev = tail
25
Insert Last
2. tail.next = Baru
26
Insert Last
3. tail= Baru
27
33
34
35
36
39
40
41
42
43
44
45
(5) Penghapusan
Dibedakan menjadi : 1. Hapus node depan 2. Hapus node belakang 3. Hapus node tertentu
Penghapusan
Jika linked list dalam keadaan kosong maka tidak dapat dilakukan penghapusan. Jika pada linked list hanya terdapat 1 node, maka head dan tail menunjuk ke NULL.
Delete First
kondisi awal linked list: Terdiri dari 5 node
50
Delete First
1. Node hapus = head;
51
Delete First
2. head.next.prev = null
52
Delete First
3. head = hapus.next
53
Delete First
Node 8 sudah terhapus
54
Delete First
Hasil akhir :
55
Delete Last
Kondisi awal linked list : Linked list terdiri dari 4 node
58
Delete Last
1. Node hapus=tail;
59
Delete Last
2. tail.prev.next = null
60
Delete Last
3. tail= hapus.prev
61
Delete Last
Node 6 sudah terhapus
62
Delete Last
Hasil akhir :
63
Hapus Node x
Penghapusan dilakukan pada node x (node tertentu). Node x adalah node yang memiliki data sama dengan key. Jika tidak ditemukan node yang sesuai maka penghapusan tidak dapat dilakukan.
Delete Node x
Kondisi awal linked list :
Linked list memiliki 3 node. Misalkan key = 3
66
Delete Node x
1. Node hapus=head; hapus adalah pointer bantu yang akan mencari node yang dimaksud (node x).
67
Delete Node x
2. hapus.prev.next = hapus.next;
68
Delete Node x
3. hapus.next.prev = hapus.prev;
69
Delete Node x
Node 3 sudah terhapus
70
Sumber
Arna Fariza, Algoritma Struktur Data : Double Linked List, PENS-ITS, Surabaya
71