Lecture 9
Lecture 9
Ghulam Farooque
Assistant Professor
Department: CS & IT
The University of Lahore
Email:
[email protected]
Doubly-linked List
Moving forward in a singly-linked list is easy;
moving backwards is not so easy.
Doubly-linked List
Moving forward in a singly-linked list is easy;
moving backwards is not so easy.
To move back one node, we have to start at
the head of the singly-linked list and move
forward until the node before the current.
Doubly-linked List
Moving forward in a singly-linked list is easy;
moving backwards is not so easy.
To move back one node, we have to start at
the head of the singly-linked list and move
forward until the node before the current.
To avoid this we can use two pointers in a
node: one to point to next node and another to
point to the previous node:
AL 6
Doubly-Linked List Node
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
head 2 6 8 7 1 size=5
current
Doubly-linked List
1. newNode->setNext( current->getNext() );
current
head 2 6 8 7 1 size=5
newNode 9 1
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
current
head 2 6 8 7 1 size=5
newNode 9 1
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
current
head 2 6 8 7 1 size=5
2 3
newNode 9 1
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
4. current->setNext( newNode );
current
head 2 6 8 7 1 size=5
2 4 3
newNode 9 1
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
4. current->setNext( newNode );
5. current = newNode;
6. size++;
head 2 6 8 7 1 size=6
2 4 3
newNode 9 1
current
Advantages of Doubly Linked List
AL 14
Disadvantages of Doubly Linked List
AL 15