Think Different Materi ASD: Double 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 = (node *)
pNew malloc(sizeof(node));

39
pNew -> data = 39;
pNew -> next = pHead;
pHead
pNew -> prev= pHead;
pHead = pNew;

/*create node*/

pCur

After:
pNew
pHead

pCur

39

Menambah Node Di Tengah Doubly-Linked List

Before:
64

pNew

55

124

pCur

After:

pNew

64

55
pCur


124

Menambah Node Di Akhir Doubly Linked List
Before:
84

pNew

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.