Operations on Linked Lists
Linked lists support various operations, including insertion, deletion, and traversal. Let's take a look at each of these operations in detail.
Insertion
Insertion refers to adding an element to a linked list. There are several scenarios to consider when inserting an element:
Insertion at the beginning: In this case, a new node is created and its
next
pointer is set to the current head of the linked list. The new node then becomes the new head.Insertion at the end: When inserting at the end, a new node is created and its
next
pointer is set toNone
. Thenext
pointer of the last node in the linked list is then updated to point to the new node.Insertion at a specific position: To insert an element at a specific position, we first need to traverse the linked list to find the position where we want to insert the new node. We then update the
next
pointers of the nodes before and after the position to include the new node.
Here's the Python code for the insertion operation:
{{code}}
Deletion
Deletion involves removing an element from the linked list. Similar to insertion, there are several scenarios to consider:
Deletion of the head node: In this case, we simply update the head pointer to point to the next node in the list
Deletion of a node: To delete a non-head node, we need to find the node and update the
next
pointer of the previous node to skip the node to be deleted.
Here's the Python code for the deletion operation:
{{code}}
Traversal
Traversal involves visiting each element in the linked list and performing some operation on it. In this case, we simply print the data of each node in the linked list.
Here's the Python code for the traversal operation:
{{code}}
xxxxxxxxxx
llist.traverse()
# Python code for Linked List operations
# Node class
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
# LinkedList class
class LinkedList:
def __init__(self):
self.head = None
# Insertion operation
def insert(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
temp = self.head
while temp.next:
temp = temp.next
# Deletion operation
def delete(self, data):
if self.head is None:
return None
temp = self.head
if temp.data == data: