Think Different ASD: Double dan Circular Linked list Double Linked List

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.