Chapter 4
Chapter 4
CHAPTER 4
Data Structure and Algorithms - Linked List
Lectured by Nasim Ahmadzadeh
Linked
List
A linked list is a sequence of data structures, which are connected together
via links.
Link − Each link of a linked list can store a data called an element.
Next − Each link of a linked list contains a link to the next link called Next.
Linked List − A Linked List contains the connection link to the first link called
First.
Disadvantages of Arrays
The size of the array is fixed.
In case of dynamically resizing the array from size S to 2S, we need 3S units of
available memory.
Programmers allocate arrays which seem "large enough” This strategy has two
disadvantages: (a) most of the time there are just 20% or 30% elements in the
array and 70% of the space in the array really is wasted. (b) If the program ever
needs to process more than the declared size, the code breaks.
Inserting (and deleting) elements into the middle of the array is potentially
expensive because existing elements need to be shifted over to make room
Linked lists
Linked lists are appropriate when the number of data elements to be
represented in the data structure at once is unpredictable.
Linked lists are dynamic, so the length of a list can increase or decrease as
necessary.
Each node does not necessarily follow the previous one physically in the
memory.
Linked lists can be maintained in sorted order by inserting or deleting an
element at the proper point in the list.
Linked list representation:
Linked list can be visualized as a chain of nodes, where every node points to
the next
node
.
head = NULL;
head
Types of linked list:
Circular Linked List − Last item contains link of the first element as next and
the first element has a link to the last element as previous.
Basic Operations:
Adding a new node in linked list is a more than one step activity. We shall
learn this with diagrams here. First, create a node using the same structure
and find the location where it has to be inserted.
LeftNode.next −>
NewNode;
This will put the new node in the middle of the two. The new list should look
like this −
Similar steps should be taken if the node is being inserted at the beginning
of the list. While inserting it at the end, the second last node of the list
should point to the new node and the new node will point to NULL.
Deletion Operation
Deletion is also a more than one step process. We shall learn with
pictorial representation. First, locate the target node to be removed,
by using searching algorithms.
The left (previous) node of the target node now should point to the next node of
the target node −
This will remove the link that was pointing to the target node.
Now, using the following code, we will remove what the target node is
pointing at.
destroy obsoleteNode
We need to use the deleted node. We can keep that in memory otherwise we can
simply deallocate memory and wipe off the target node completely.
Reverse operation:
This operation is a thorough one. We need to make the last node to
be pointed by the head node and reverse the whole linked
list.
First, we traverse to the end of the list. It should be pointing to NULL. Now,
we shall make it point to its previous node −
We have to make sure that the last node is not the lost node. So we'll
have some temp node, which looks like the head node pointing to
the last node. Now, we shall make all left side nodes point to their
previous nodes one by one.
Except the node (first node) pointed by the head node, all nodes
should point to their predecessor, making them their new successor.
The first node will point to NULL.
We'll make the head node point to the new first node by using the
temp node
Example:
Data Structure - Doubly Linked List
Doubly Linked List is a variation of Linked list in which navigation is possible in both
ways, either forward and backward easily as compared to Single Linked List.
Following are the important terms to understand the concept of doubly linked list.
Link − Each link of a linked list can store a data called an element.
Next − Each link of a linked list contains a link to the next link called Next.
Prev − Each link of a linked list contains a link to the previous link called Prev.
LinkedList − A Linked List contains the connection link to the first link called First
and to the last link called Last.
Data Structure - Doubly Linked List
Advantages:
Convenient to traverse the list backwards.
Simplifies insertion and deletion because you no longer have to refer to the previous
node.
Disadvantage:
Increase in space requirements.
Doubly Linked List Representation:
Doubly Linked List contains a link element called first and last.
Each link carries a data field(s) and two link fields called next and prev.
Each link is linked with its next link using its next link.
Each link is linked with its previous link using its previous link.
The last link carries a link as null to mark the end of the list.
Basic Operations:
Insertion − Adds an element at the beginning of the list.
Deletion − Deletes an element at the beginning of the list.
Insert Last − Adds an element at the end of the list.
Delete Last − Deletes an element from the end of the list.
Insert After − Adds an element after an item of the list.
Delete − Deletes an element from the list using the key.
Display forward − Displays the complete list in a forward manner.
Display backward − Displays the complete list in a backward manner.
Deletion:
Insertion:
nsertion of a Node at the Beginning of the List
Insertion of a Node at the End of the List
Insertion of a New Node at the Given Position
Delete a Node from the Beginning of the List
Delete a Node from the End of the List
Delete a Node from the Given Position
Search a Node Data in the List
Data Structure - Circular Linked List:
Circular Linked List is a variation of Linked list in which the first element points
to the last element and the last element points to the first element. Both
Singly Linked List and Doubly Linked List can be made into a circular
linked list.
Singly Linked List as
Circular:
In singly linked list, the next pointer of the last node points to the first
node.
Doubly Linked List as Circular
In doubly linked list, the next pointer of the last node points to the first node and
the previous pointer of the first node points to the last node making the circular
in both directions.
The last link's next points to the first link of the list in both cases of singly as
well as doubly linked list.
The first link's previous points to the last of the list in case of doubly linked list.
Basic Operations: