Double-Circular-Linked List
Double-Circular-Linked List
1
Singly Linked List (SLL) - More Terminology
A node’s successor is the next node in the sequence
The last node has no successor
A node’s predecessor is the previous node in the
sequence
The first node has no predecessor
A list’s length is the number of elements in it
A list may be empty (contain no elements)
Head
87 34 78 65
2
Doubly Linked List (DLL)
In a singly linked list (SLL) one can move
beginning from the head node to any node in
one direction only (from left to right)
SLL is also termed as one –way list
On the other hand, Doubly Linked List (DLL) is
a two-way list
One can move in either direction from left to right
and from right to left
This is accomplished by maintaining two linked
fields instead of one as in a SLL
3
Motivation
Doubly linked lists are useful for playing video
and sound files with “rewind” and “instant
replay”
They are also useful for other linked data which
require “rewind” and “fast forward” of the data
4
Doubly Linked List
Each node on a list has two pointers.
A pointer to the next element.
A pointer to the previous element
The beginning and ending nodes' previous
and next links, respectively, point to some
kind of terminator, typically a sentinel node or
null, to facilitate traversal of the list
… …
… …
5
Doubly-Linked Lists (DLL)
56 67 93
10 20 40 55 70
Head
Cur->prev Cur Cur->next
7
DLLs compared to SLLs
Advantages: Disadvantages:
Can be traversed in Requires more space to
either direction (may be store backward pointer
essential for some List manipulations are
programs) slower
Some operations, such because more links must
as deletion and inserting be changed
before a node, become Greater chance of
easier having bugs
because more links must
be manipulated
8
Double Linked List – Definition in
C++
struct Node{
int data;
struct Node* next;
struct Node* prev;
} *Head;
9
Operations on DLL
The two node links allow traversal of the list in
either direction
While adding or removing a node in a doubly
linked list requires changing more links than
the same operations on a singly linked list
The operations are simpler and potentially
more efficient (for nodes other than first nodes)
because there is no need to keep track of the
previous node during traversal or
no need to traverse the list to find the previous
node, so that its link can be modified
10
Doubly Linked List Operations
insertNode(int item)
//add new node to ordered doubly linked list
deleteNode(int item)
//remove a node from doubly linked list
searchNode(int item)
print()
11
DLL - Insertion
12
Inserting a Node
Insert a node NewNode before Cur (not at
front or rear)
NewNode->next = Cur;
NewNode->prev = Cur->prev;
Cur->prev = NewNode;
(NewNode->prev)->next = Newnode;
10 20 55 70
Head 40
Cur
NewNode 13
Doubly – Linked List
DELETE:
14
Deleting a node from a DLL
Node deletion from a DLL involves changing two links
In this example, we will delete node 67
Head
56 67 93
15
Deleting a Node
Delete a node Cur (not at front or rear)
(Cur->prev)->next = Cur->next;
(Cur->next)->prev = Cur->prev;
delete Cur;
10 20 40 55 70
Head
Cur
16
Other operations on linked lists
Most “algorithms” on linked lists
such as insertion, deletion, and searching—are
pretty obvious;
you just need to be careful
Sorting a linked list is just messy,
since you can’t directly access the nth element
you have to count your way through a lot of other
elements
17
Circular Linked lists
a b c d
head
18
Concept
19
Activities
20
21
Self Learning
Insertion at the end of the list
22
DLL with Dummy Head Node
To simplify insertion and deletion by
avoiding special cases of deletion and
insertion at front and rear, a dummy head
node is added at the head of the list
23
Summary
Doubly Linked List
Concept
Operations on Doubly Linked List
Insertion
Deletion
24
Summary
• Dynamic structure (Memory Allocated at run-
time).
• We can have more than one datatype.
• Re-arrange of linked list is easy (Insertion-
Deletion).
• It doesn’t waste memory.
25
Summary
Disadvantages:
They have a tendency to waste memory due
to pointers requiring extra storage space.
Nodes are stored in contiguously, greatly
increasing the time required to access
individual elements within the list.
Difficulties arise in linked lists when it comes
to reverse traversing. Singly linked lists are
extremely difficult to navigate backwards, and
while doubly linked lists are somewhat easier
to read, memory is wasted in allocating space
for a back pointer. 26
Summary
Disadvantages of Linked Lists
27