Pertemuan 3 Data Komposit Linked list Matakuliah : T0026/Struktur Data

Download Report

Transcript Pertemuan 3 Data Komposit Linked list Matakuliah : T0026/Struktur Data

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 3
Data Komposit Linked list
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat menghasilkan program
modular yang menggunakan singly linked
list
2
Outline Materi
•
•
•
•
•
•
Alokasi memori dinamis
Pointer
Singly-linked list
Operasi linked list
contoh program linked list
circular singly linked-list
3
Definisi Linked list
• Linked List : struktur data yg terdiri dr bbrp node
yang saling dikaitkan secara linear dengan
bantuan pointer
• Node dialokasikan secara dinamik
• Tipe data node : struct
• Jumlah pointer pengait node
– 1(satu): single linked list
– 2 (dua): double linked list
– >2 (lebih dari dua): multiple
Single Linked List (LL)
Contoh deklarasi tipe node
struct nodemhs {
char
nama[10];
float
ip;
struct nodemhs *next;
}
Contoh deklarasi pointer penunjuk Awal LL
struct nodemhs
*head;
Pointer head digunakan untuk mengakses
data dalam LL. Akses harus dimulai dari
node pertama (sequential)
• Pointer head perlu diinisialisasi
head = NULL;
head
NULL
Pembentukan node baru
struct nodemhs
*p, *curr;
//deklarasi variabel pointer
p = (struct nodemhs*)malloc(sizeof…);
strcpy (p->nama, “Dewi”);
p->ip = 4.0;
p->next = NULL;
p
nama
ip
next
Dewi
4.0
NULL
• Pengaitan node baru ke LL
– Jika LL masih kosong
– Pengaitan ke awal LL
– Pengaitan ke akhir LL
– Penyisipan pada posisi tertentu
-Jika LL masih kosong
if (head ==NULL) head = p;
p
head NULL
head
nama
ip
next
Dewi
4.0
NULL
nama
ip
next
Dewi
4.0
NULL
- Pengaitan ke awal LL
p->next = head;
head = p;
Misalkan ada node baru p
p
nama
ip
next
Tono
3.8
NULL
Maka LL menjadi
head
nama
ip
Tono
3.8
next
nama
ip
next
Dewi
4.0
NULL
- Pengaitan
ke akhir LL
//cari node terakhir
curr = head;
while (curr->next != NULL) curr=curr->next;
head
nama
ip
Tono
3.8
next
nama
ip
next
Dewi 4.0 NULL
curr
//pasang kait ke node p
curr->next = p;
p
nama
Ani
head
nama
ip
Tono
3.8
next
nama
ip
Dewi 4.0
next
nama
Ani
ip
next
3.7 NULL
ip
next
3.7 NULL
- Penyisipan pada pointer list
head
nama
ip
Tono
3.8
next
nama
ip
next
Dewi 4.0
Ani
list
p
nama
Andi
p->next = list->next;
list->next = p;
ip
nama
next
3.9 NULL
ip
next
3.7 NULL
Penghapusan node
head
nama
ip
Tono
3.8
curr
next
nama
ip
Dewi 4.0
next
nama
Ani
ip
next
3.7 NULL
list
curr = head;
while (curr->next != list) curr=curr->next;
curr->next = list->next;
free(list);
Circular Single Linked List
head
nama
ip
Tono
3.8
next
nama
ip
Dewi 4.0
next
nama
ip
Ani
3.7
next
Pointer next di node terakhir selalu
menunjuk ke node awal LL
15