LINKED LIST
Array == Laci?
2
• Data disimpan dalam suatu struktur, sedemikian rupa sehingga
elemen-elemen di dalam struktur tersebut dapat diolah secara
kelompok ataupun secara individu.
4
• Sebuah array yang setiap data elemennya bertipe struct. Umumnya dipakai
untuk menyimpan object data yang terstruktur, misal: data mahasiswa,
karyawan, buku, barang, dsb.
5
Linked List == kereta????
Page 6 6
Apakah Linked List itu ?
CELL
Mengapa memakai Linked List ?
1. Mudah untuk menambahkan dan menghapus elemen(pada array tidak mungkin
menambahkan elemen, karena banyaknya elemen sudah ditentukan dari awal)
2. Panjang list bisa diubah dengan bebas (panjang array fixed)
3. Mudah untuk menyambungkan beberapa list, maupun memutuskannya (array tidak
bisa)
4. Memungkinkan user mendesain struktur data yang kompleks
Struktur linked List
pHead
A B C
header 37 38 40 52
37 4 38 2 40 13 52 40 NULL
Sel ke-1
pointer
Sel ke-1→ isi: value=4
address sel berikutnya=38
ILUSTRASI
• Pada bangsal sebuah rumah sakit terdapat 12 tempat
tidur. Sembilan di antaranya, telah ditempati pasien.
Kita hendak membuat list nama para pasien tersebut
diurut secara alfabetik. Untuk itu kita buat sebuah
linked list, dengan penuding NEXT.
• Variable START kita gunakan untuk menyatakan
lokasi pasien pertama dalam list. Jadi START berisi 5,
karena pasien pertama tersebut, yakni Adam,
menempati tempat tidur nomor 5.
• Selanjutnya penuding dari Adam bernilai 3, karena
pasien kedua dalam list adalah Deni, menempati
tempat tidur nomor 3, demikian seterusnya.
• Akhirnya, untuk pasien terakhir, Samuel, penudingnya
merupakan penuding nol (dinyatakan dengan
bilangan 0).
NULL POINTER
• Nilai yang dimiliki sebuah pointer adalah address pada
memory dimana data tersimpan
• Pointer yang tidak menunjuk ke address manapun disebut
dengan NULL pointer. Maksudnya, satu kondisi khusus
dimana pointer itu belum diset dengan sebuah address
tertentu
• Pada stdio.h biasanya didefinisikan dengan nilai 0
• Saat fungsi fopen,malloc dieksekusi, jika terdapat error,
maka nilai yang dikembalikan adalah NULL
Pada kuliah ini, NULL disimbolkan
dengan kotak yang diberi garis diagonal
Deklarasi head
void main()
{
motor *pm1, *pm2, *pm3;
}
Operasi dasar linked list
1. Menambah sebuah node.
2. Menghapus sebuah node.
3. Mencari sebuah node.
4. List tranversal
Menambahkan node ke list kosong
Before: Code:
pNew 39 pNew -> next = pHead; // set link to NULL
pPre
After:
pNew 39
pHead
pPre
Menambahkan node ke awal list
Before: Code (same):
pNew -> next = pHead; // set link to NULL
pNew 39
pHead = pNew;// point list to first node
pHead 75 124
pPre
After:
pNew 39
pHead
75 124
pPre
Menambahkan node di tengah list
Before: Code
pNew -> next = pPre -> next;
pNew 64
pPre -> next = pNew;
55 124
pPre
After:
pNew 64
55 124
pPre
Menambahkan node akhir list
Before: Code
pNew -> next = NULL;
pNew 144
pPre -> next = pNew;
55 124
pPre
After:
pNew 144
55 124
pPre
Menambahkan node pada linked list
Terdapat empat tahap untuk menambah node linked list:
• Membuat node baru.
• Mendapatkan node yang terletak sebelum node baru disisipkan
(pPre)
• Atur next node baru agar menunjuk node sesudah posisi
penyisipan.
• Atur next pPre agar menunjuk node baru.
Kode untuk menambah data ke linked list
• Untuk menambah data pada linked list, harus diketahui head pointer (pHead), pointer yang menunjuk
node sebelum tempat penyisipan (pPre) data yang akan disisipkan (item).
Before: Code:
pHead = pCur -> next;
pHead
free(pCur);
75 124
pPre pCur
After:
pPre pCur
Menghapus node dari linked list – kasus umum
Before: Code:
pPre -> next = pCur -> next;
75 96 124
free(pCur);
pPre pCur
After:
Recycled
75 124
pPre pCur
Kode untuk menghapus node dari linked list
• Untuk menghapus node dari linked list, harus diketahui head pointer (pHead), node yang
akan dihapus (pCur), serta pendahulunya,
• mengunjungi semua node yang ada pada list dari head sampai node terakhir
//traverse a linked list
Struct node *pWalker;
pWalker = pHead;
printf(“List contains:\n”);
while (pWalker != NULL){
printf(“%d ”, pWalker -> data);
pWalker = pWalker -> next;
}
Break…
Terima Kasih