Java Reference
In-Depth Information
Display 15.25
A Doubly Linked List with an Iterator
(part 2 of 3)
42
public
void
insertHere(String newData)
43 {
44
if
(position ==
null
&& head !=
null
)
45 {
46
// Add to end. First move a temp
47
// pointer to the end of the list
48 TwoWayNode temp = head;
49
while
(temp.next !=
null
)
50 temp = temp.next;
51 temp.next = new TwoWayNode(newData, temp,
null
);
52 }
53
else
if
(head ==
null
|| position.previous ==
null
)
54
// at head of list
55 DoublyLinkedList.this.addToStart (newData);
56
else
57 {
58
// Insert before the current position
59 TwoWayNode temp =
new
TwoWayNode(newData,
position.previous, position);
60
position.previous.next = temp;
61
position.previous = temp;
62
}
63
}
64
public
void
delete( )
65
{
66
if
(position ==
null
)
67
throw
new
IllegalStateException( );
68
else
if
(position.previous ==
null
)
69
{
// Deleting first node
70
head = head.next;
71
position = head;
72
}
73
else
if
(position.next ==
null
)
74
{
// Deleting last node
75
position.previous.next =
null
;
76
position =
null
;
77
}
78
else
79
{
80
position.previous.next = position.next;
81
position.next.previous = position.previous;
82
position = position.next;
83
}
84
}
85
}
// DoublyLinkedIterator
(continued)