Linked List Implementation/Coding Issues in C

advertisement
Algoritma dan Struktur Data
Circular Linked List
Struktur Circular Linked List
pList
A
B
C
 Node terakhir menunjuk node pertama
 Setiap node terdiri atas
 Isi data
 Next, yaitu pointer ke node selanjutnya
pada list
Struktur Sebuah Node
struct node {
//bagian data
tipedata data 1;
tipedata data 2;
…
tipedata data n;
//pointer ke node selanjutnya
struct node *next;
};
typedef struct node node;
Operasi dasar linked list
1.
2.
3.
4.
Menambah sebuah node.
Menghapus sebuah node.
Mencari sebuah node.
List tranversal
Menambahkan node ke list kosong
Before:
pNew
Code:
pNew -> next = pNew;
39
pList = pNew;// point list to first node
pList
pPre
After:
pNew
pList
pPre
39
Menambahkan node di tengah list
Before:
Code
pNew -> next = pPre -> next;
pNew
pPre -> next = pNew;
64
55
124
pPre
After:
pNew
64
55
pPre
124
Latihan : bagaimana menyisipkan node
sebelum pList?
Before:
pNew
pList
pPre
After ?
Code ?
39
75
124
Menghapus node pertama dari linked list
Before:
Code:
pList
pPre
75
pPre -> next = pCur->next;
pList = pList->next;
free(pCur);
124
pCur
After:
pList
pPre
Recycled
pCur
124
Menghapus node dari linked list – kasus umum
Before:
Code:
75
96
pPre -> next = pCur -> next;
free(pCur);
124
pCur
pPre
After:
Recycled
75
pPre
pCur
124
Download