Linked List Implementation/Coding Issues in C

advertisement
Algoritma dan Struktur Data
Doubly Linked List
pHead
Struktur Doubly Linked List
A
B
C
 Node-node doubly linked list saling berkait
melalui pointer. Bagian prev sebuah node
menunjuk node selanjutnya. Bagian next
sebuah node menunjuk node sesudahnya.
 pHead : pointer yang menunjuk node
pertama
pHead
Struktur Doubly Linked List
A
B
C
 Setiap node terdiri atas
 prev, yaitu pointer yang menunjuk ke node
sebelumnya pada list
 Data
 next, yaitu pointer yang menunjuk ke node
sesudahnya pada list
 prev node pertama bernilai NULL
 next node terakhir bernilai NULL
Struktur Sebuah Node Doubly Linked List
 Setiap node terdiri atas
 prev, yaitu pointer yang menunjuk ke node
sebelumnya pada list
 Data
 next, yaitu pointer yang menunjuk ke node
sesudahnya pada list
prev
data
next
Struktur Sebuah Node Doubly Linked List
struct node {
//bagian data
tipedata data 1;
tipedata data 2;
…
tipedata data n;
//pointer ke node sebelum dan sesudahnya
struct node *prev;
struct node *next;
};
typedef struct node node;
Operasi Doubly Linked List
1.
2.
3.
4.
Menambah sebuah node pada doubly linked list.
Menghapus sebuah node dari doubly linked list.
Mencari node pada doubly linked list.
List tranversal
Menambah Node ke Doubly-Linked List Kosong
Initial:
Code:
pNew
pNew = (node *) /*create node*/
malloc(sizeof(node));
pNew -> data = 39;
pNew -> next = pHead;
pNew -> prev= pHead;
pHead = pNew;
39
pHead
pCur
pNew
After:
pHead
pCur
39
Menambah Node Di Tengah Doubly-Linked List
Before:
pNew
64
55
124
pCur
After:
pNew
64
55
pCur
124
Menambah Node Di Akhir Doubly Linked List
Before:
pNew
84
55
74
pCur
After:
pNew
84
55
pCur
74
Menghapus Node Pertama Doubly-Linked List
Before:
Code:
pHead
75
pHead = pCur ->next;
pCur ->next ->prev = NULL;
free(pCur);
124
pCur
After:
pHead
Recycled
pCur
124
Menghapus Node Pertama Doubly-Linked List
Kasus umum
Before:
75 23
12477
46
pCur
After:
75
Recycled
23
pCur
77
124
Tugas
 Modifikasilah code single linked list menjadi doubly
linked list.
Download