Dokumen tersebut membahas tentang operasi insert pada single linked list. Terdapat empat jenis operasi insert yaitu insert awal, insert akhir, insert after, dan insert before. Dijelaskan algoritmanya beserta ilustrasinya dengan pointer-pointer bantuan seperti head, tail, current, dll.
3. PENGERTIAN
●Linked list terdiri atas elemen-
elemen individu yang masing2
dihubungkan dengan pointer
tunggal.
●Setiap elemen terdiri atas 2
bagian :
● data/informasi yang disimpan
● next, yaitu pointer yang
menyimpan alamat elemen
selanjutnya
Elemen Individu
?
data next
4. Dalam single linked
list, list hanya dapat
dilintasi satu arah
dari head ke tail
1000
head
Nilai 2000
1000
Nilai
2000
2000
tail
Ilustrasi
PENGERTIAN
5. Linked List
• Pada realitanya, posisi linked list
terpencar-pencar di memori
• Pointer dari elemen ke elemen berarti
sebagai penjamin bahwa semua
elemen dapat diakses.
6. Representasi Linked List
6
b
h
e
a
d
c
typedef struct simpul Node;
struct simpul {
char data;
Node *next;
};
Node *head;
•Tiap simpul terdiri atas 2 bagian :
data dan pointer next.
•Pointer head menunjuk ke simpul
pertama dr linked list
7. Linked List
7
b
h
e
a
d
c
typedef struct simpul Node;
struct simpul {
char data;
Node *next;
};
Node *head;
head->next->next
head->next
head->next->data
head->data
9. Empty linked list
9
h
e
a
d
• Linked list yang masih
kosong ditunjukkan oleh
pointer head yang bernilai
NULL.
• Ingat, pointer head menunjuk
ke simpul pertama dalam
sebuah linked list.
• Jika list masih kosong, maka
tidak terdapat simpul pertama.
h
e
a
d
Utk singkatnya,
biasanya sel
pointernya tidak
digambar.
10. ALGORITMA INSERT SLL
1. Siapkan node baru yang akan disisipkan.
2. Cari posisi yang akan disisipkan.
3. Sambungkan dengan existing linked list.
14. ILUSTRASI
Pointer-pointer bantuan yang digunakan dalam Insert
Awal :
1. p = digunakan untuk memesan alokasi node baru.
2. head = pointer yang akan menunjuk data pertama dalam
linked list.
15. 1. SIAPKAN NODE BARU
YANG AKAN DISISIPKAN
P
p = (Node *)malloc(size of(Node));
p data = Nilai;
p next = NULL;
Nilai = 4
2000
? ?
2000 4
21. 2. CARI POSISI YANG AKAN
DISISIPKAN
2000
P
4 3000
if (head==NULL)
head = p;
else
p next = head;
head = p;
2000
3000
head
2 4000
3000
5
4000
Karena insert awal, maka node baru pasti akan
menjadi data pertama yang ditunjuk oleh head
22. 3. SAMBUNGKAN DENGAN
EXISTING LINKED LIST
2000
P
4
2000
3000
head
2 4000
3000
5
4000
2000
if (head==NULL)
head = p;
else
p next = head;
head = p;
3000
26. ILUSTRASI
Pointer-pointer bantuan yang digunakan dalam Insert Akhir :
1. p = digunakan untuk memesan alokasi node baru.
2. head = pointer yang akan menunjuk data pertama dalam
linked list.
3. tail = pointer yang digunakan untuk mencari letak simpul
terakhir dalam linked list.
27. 1. SIAPKAN NODE BARU
YANG AKAN DISISIPKAN
P
p = (Node *)malloc(size of(Node));
p data = Nilai;
p next = NULL;
Nilai = 5
4000
? ?
4000 5
29. 2. CARI POSISI YANG AKAN
DISISIPKAN
if (head==NULL)
head = p;
else{
tail = head;
while (tail next != NULL){
tail = tail next;}
}
head
4000
P
5
4000
tail
?
30. 3. SAMBUNGKAN DENGAN
EXISTING LINKED LIST
4000
P
5
4000
head
if (head==NULL)
head = p;
else{
tail = head;
while (tail next != NULL)
tail = tail next;
}
4000
tail
?
33. 2. CARI POSISI YANG AKAN
DISISIPKAN
2000
head
1 3000
2000
7
3000
tail
3000
2000
if (head==NULL)
head = p;
else{
tail = head;
while (tail next != NULL){
tail = tail next;}
}
?
34. tail next = p;
tail = tail next;
2000
head
1 3000
2000
7
3000
tail
3. SAMBUNGKAN DENGAN
EXISTING LINKED LIST
4000
P
5
4000
4000
3000
4000
38. ILUSTRASI
Pointer-pointer bantuan yang digunakan dalam Insert After :
1. p = digunakan untuk memesan alokasi node baru.
2. head = pointer yang akan menunjuk data pertama dalam linked list.
3. after = pointer yang digunakan untuk mencari key yang diinputkan
oleh user.
39. 1. SIAPKAN NODE BARU
YANG AKAN DISISIPKAN
P
p = (Node *)malloc(size of(Node));
p data = Nilai;
p next = NULL;
Nilai = 7
3000
? ?
3000 7
41. 2. CARI POSISI YANG
AKAN DISISIPKAN
after = head;
while (after data != key){
if (after next == NULL){
puts(“Key Tidak Ada”);
}else{
after = after next;
}
}
Key = 4
1000
head
2 2000
1000
9
2000
after
1000
2000
Key Tidak Ada
?
43. 2. CARI POSISI YANG AKAN
DISISIPKAN
Key = 4
1000
head
2 2000
1000
4
2000
after
1000
2000
after = head;
while (after data != key){
if (after next == NULL){
puts(“Key Tidak Ada”);
}else{
after = after next;
}
}
?
44. P next = after next;
after next = P;
3. SAMBUNGKAN DENGAN
EXISTING LINKED LIST
Key = 4
1000
head
2 2000
1000
4
2000
after
2000
3000
P
7
3000
Karena tidak ada data lagi setelah after next,
maka p next tetap bernilai NULL.
3000
48. ILUSTRASI
Pointer-pointer bantuan yang digunakan dalam Insert Before :
1. p = digunakan untuk memesan alokasi node baru.
2. head = pointer yang akan menunjuk data pertama dalam linked list.
3. bef = singkatan dari pointer before yang digunakan untuk mencari key yang
diinputkan oleh user.
4. pbef = singkatan dari pointer previous before yang digunakan untuk penanda node
yang berada sebelum node yang ditunjuk oleh pointer bef.
49. 1. SIAPKAN NODE BARU
YANG AKAN DISISIPKAN
P
p = (Node *)malloc(size of(Node));
p data = Nilai;
p next = NULL;
Nilai = 5
2500
? ?
2500 5
54. 2. CARI POSISI YANG AKAN
DISISIPKAN
Key = 3
1000
head
6 2000
1000
9
2000
Key Tidak Ada
if (head data == key){
insertawal;
}else{
bef = head;
do{
pbef = bef;
if(bef next == NULL){
puts(“Key Tidak Ada”);
}else{
bef = bef next;
}while(bef data != key);}
bef
pbef
? ?
1000
1000
2000
2000
56. 2. CARI POSISI YANG AKAN
DISISIPKAN
Key = 3
1000
head
6 2000
1000
3
2000
bef
pbef
1000
2000
if (head data == key){
insertawal;
}else{
bef = head;
do{
pbef = bef;
if(bef next == NULL){
puts(“Key Tidak Ada”);
}else{
bef = bef next;
}while(bef data != key);}
? ?
1000
57. P next = bef;
pbef next = P;
3. SAMBUNGKAN DENGAN
EXISTING LINKED LIST
Key = 3
1000
head
6
1000
3
2000
2000
bef
1000
pbef
2500
P
5 2000
2500
2000
2500
60. Referensi
60
1. Brian W. Kerninghan, Dennis M. Ritchie (2012): The C Programming
Language : Ansi C Version 2 Edition, PHI Learning
2. Byron Gottfried (2010) : Programming with C, Tata McGraw - Hill
Education
3. Kochan Stephen (20040 : Programming in C, 3rd Edition, Sams
4. K. N. King (2008) : C Programming: A Modern Approach, 2nd Edition, W.
W. Norton & Company
5. Abdul Kadir (2012) : Algoritma & Pemrograman Menggunakan C & C++,
Andi Publisher, Yogyakarta
6. http://www.gdsw.at/languages/c/programming-bbrown/
7. https://www.petanikode.com/tutorial/c/
8. http://www.cprogramming.com/tutorial/c-tutorial.html