Professional Documents
Culture Documents
Doubly Linkedlist
Pointers exist between adjacent nodes in both directions.
The list can be traversed from either forward or backward direction.
Usually two pointers are maintained to keep track of the list, head and tail.
28-Jul-14
prev
next
elem
node
header
28-Jul-14
nodes/positions trailer
elements
28-Jul-14
FEA2
F68F
F003
FEA2
FEA2 B F68F
NULL A F003
Previous Address Field or Backward link field:
F003
C NULL
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
NULL
28-Jul-14
Memory
NEWNODE
BL D FL
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
NULL
NULL
NULL
NEWNODE
28-Jul-14
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
FEA2
NULL
NULL
NEWNODE,LAST
28-Jul-14
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
Memory
FEA2
NEWNODE
FEA2
NULL
BL D FL
NULL
NEWNODE,LAST
28-Jul-14
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
F003
FEA2
NULL
NULL
NULL
NULL
NEWNODE
LAST
28-Jul-14
10
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
F003
FEA2
NULL
LAST
28-Jul-14
F003
FEA2
NULL
NEWNODE
PROF. RAJESH M / S.C.S.E @ VIT UNIVERSITY - CHENNAI
11
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
F003
FEA2
NULL
F003
FEA2
NULL
LAST
28-Jul-14
12
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
Memory
FEA2
F003
FEA2
NULL A
28-Jul-14
F003
FEA2
NEWNODE
BL D FL
NULL
13
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
F68F
FEA2
F003
FEA2
NULL A F003
28-Jul-14
F003
C NULL
NEWNODE
FEA2 B F68F
14
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
FEA2
NULL A F003
F003
FEA2 B F68F
F68F
F003
LAST
28-Jul-14
C NULL
NEWNODE
15
Creation of a list
1.
2.
3.
4.
5.
6.
7.
HEAD
FEA2
FEA2
NULL A F003
F003
FEA2 B F68F
F68F
F003
C NULL
LAST
28-Jul-14
16
Insertion of a node
The new node can be inserted in the list at three different places
1. Inserting as a first node
2. Inserting as a last node
3. Inserting an intermediate node
28-Jul-14
17
HEAD
NULL
NULL
NULL
NEWNODE
28-Jul-14
18
NULL
NEWNODE
28-Jul-14
19
HEAD
1. If HEAD==NULL
Set HEAD=NEWNODE
2. Assign NEWNODE >FLINK=HEAD
3. Set HEAD->BLINK=NEWNODE
3. Set HEAD=NEWNODE
FEA2
FEA2
NULL A F003
F003
FEA2 B F68F
F003
FB12
NULL
F68F
C NULL
LAST
NULL
NEWNODE
28-Jul-14
20
HEAD
1. If HEAD==NULL
Set HEAD=NEWNODE
2. Assign NEWNODE >FLINK=HEAD
3. Set HEAD->BLINK=NEWNODE
3. Set HEAD=NEWNODE
FEA2
FEA2
FB12 A F003
F003
FEA2 B F68F
F003
LAST
FB12
NULL
F68F
C NULL
FEA2
NEWNODE
28-Jul-14
21
HEAD
1. If HEAD==NULL
Set HEAD=NEWNODE
2. Assign NEWNODE >FLINK=HEAD
3. Set HEAD->BLINK=NEWNODE
3. Set HEAD=NEWNODE
FEA2
FEA2
FB12 A F003
F003
FEA2 B F68F
F003
LAST
FB12
NULL
F68F
C NULL
FEA2
NEWNODE
28-Jul-14
22
HEAD
1. If HEAD==NULL
Set HEAD=NEWNODE
2. Assign NEWNODE >FLINK=HEAD
3. Set HEAD->BLINK=NEWNODE
3. Set HEAD=NEWNODE
FB12
FEA2
FB12 A F003
F003
FEA2 B F68F
F003
LAST
FB12
NULL
F68F
C NULL
FEA2
NEWNODE
28-Jul-14
23
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
24
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
25
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
26
LAST
F003
FEA2 B F68F
F68F
C FB12
F003
FB12
NULL
NULL
NEWNODE
28-Jul-14
27
LAST
F003
FEA2 B F68F
F68F
C FB12
F003
FB12
F68F
NULL
NEWNODE
28-Jul-14
28
CONDITION = B
FEA2
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
29
Assign NEXT=LAST->FLINK
Assign NEWNODE->FLINK=NEXT
Assign NEWNODE->BLINK=LAST
Assign LAST->FLINK=NEWNODE
else LAST=LAST->FLINK
HEAD
CONDITION = B
FEA2
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
30
Assign NEXT=LAST->FLINK
Assign NEWNODE->FLINK=NEXT
Assign NEWNODE->BLINK=LAST
Assign LAST->FLINK=NEWNODE
else LAST=LAST->FLINK
HEAD
CONDITION = B
FEA2
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
31
Assign NEXT=LAST->FLINK
Assign NEWNODE->FLINK=NEXT
Assign NEWNODE->BLINK=LAST
Assign LAST->FLINK=NEWNODE
else LAST=LAST->FLINK
HEAD
CONDITION = B
FEA2
LAST
FEA2
NULL A F003
NEXT
F003
FEA2 B F68F
F003
F68F
C NULL
FB12
NULL
NULL
NEWNODE
28-Jul-14
32
Assign NEXT=LAST->FLINK
Assign NEWNODE->FLINK=NEXT
Assign NEWNODE->BLINK=LAST
Assign LAST->FLINK=NEWNODE
else LAST=LAST->FLINK
HEAD
CONDITION = B
FEA2
LAST
NEXT
F003
FEA2 B F68F
FEA2
NULL A F003
F003
F68F
C NULL
FB12
F003
F68F
NEWNODE
28-Jul-14
33
Assign NEXT=LAST->FLINK
Assign NEWNODE->FLINK=NEXT
Assign NEWNODE->BLINK=LAST
Assign LAST->FLINK=NEWNODE
Assign NEXT->BLINK=NEWNODE
else LAST=LAST->FLINK
HEAD
CONDITION = B
FEA2
LAST
NEXT
F003
FEA2 B FB12
FEA2
NULL A F003
FB12
F68F
C NULL
FB12
F003
F68F
NEWNODE
28-Jul-14
34
Modification of a node
1. Print, enter the value
4. while(LAST!=NULL)
which is going to modify
if(LAST->DATA==MODIFY)
then Read, LAST->DATA
2. Read, MODIFY
3. LAST=HEAD
else LAST=LAST->FLINK
HEAD
FEA2
LAST
FEA2
NULL A F003
F003
FEA2 B F68F
F003
F68F
C NULL
MODIFY = B
28-Jul-14
35
Modification of a node
1. Print, enter the value
4. while(LAST!=NULL)
which is going to modify
if(LAST->DATA==MODIFY)
2. Read, MODIFY
then Read, LAST->DATA
3. LAST=HEAD
else LAST=LAST->FLINK
HEAD
FEA2
FEA2
NULL A F003
LAST
F003
FEA2 B F68F
F003
F68F
C NULL
MODIFY = B
28-Jul-14
36
Modification of a node
1. Print, enter the value
4. while(LAST!=NULL)
which is going to modify
if(LAST->DATA==MODIFY)
then Read, LAST->DATA
2. Read, MODIFY
3. LAST=HEAD
else LAST=LAST->FLINK
HEAD
FEA2
FEA2
NULL A F003
LAST
F003
FEA2 F F68F
F003
F68F
C NULL
MODIFY = B
28-Jul-14
37
Deletion of a node
The node can be deleted in the list at three different places
1. Deleting the first node
2. Deleting the last node
3. Deleting an intermediate node
28-Jul-14
38
F003
FEA2 B F68F
F003
F68F
C NULL
DELNODE
28-Jul-14
39
HEAD
F003
FEA2 B F68F
F003
F68F
C NULL
DELNODE
28-Jul-14
40
HEAD
F003
NULL B F68F
F003
F68F
C NULL
DELNODE
28-Jul-14
41
LAST
FEA2
NULL A F003
28-Jul-14
F003
FEA2 B F68F
F003
F68F
C NULL
42
28-Jul-14
LAST
F003
FEA2 B F68F
F003
F68F
C NULL
43
HEAD
FEA2
FEA2
NULL A F003
28-Jul-14
LAST,DELNODE
F003
FEA2 B F68F
F003
F68F
C NULL
44
HEAD
FEA2
FEA2
NULL A F003
28-Jul-14
F003
FEA2 B NULL
LAST,DELNODE
F68F
F003 C NULL
45
HEAD
DELDATA=B
FEA2
HEAD
FEA2
NULL A F003
28-Jul-14
F003
FEA2 B F68F
F003
F68F
C NULL
46
HEAD
FEA2
FEA2
NULL A F003
28-Jul-14
DELDATA=B
LAST
F003
FEA2 B F68F
F003
F68F
C NULL
47
HEAD
DELDATA=B
FEA2
FEA2
NULL A F003
28-Jul-14
LAST,DELNODE
F003
FEA2 B F68F
F003
F68F
C NULL
48
HEAD
DELDATA=B
FEA2
PREV
FEA2
NULL A F003
28-Jul-14
LAST,DELNODE
F003
FEA2 B F68F
NEXT
F68F
F003 C NULL
49
HEAD
DELDATA=B
FEA2
PREV
FEA2
NULL A F68F
28-Jul-14
LAST,DELNODE
F003
FEA2 B F68F
NEXT
F68F
F003 C NULL
50
HEAD
DELDATA=B
FEA2
PREV
FEA2
NULL A F68F
28-Jul-14
LAST,DELNODE
F003
FEA2 B F68F
NEXT
F68F
FEA2 C NULL
51