Linked Lists
Linked Lists
Insertion
At Beginning:
New_node = Node(data)
New_node.next = head
Head = new_node
At Position (n):
Temp = head
For _ in range(n-1):
Temp = temp.next
New_node = Node(data)
New_node.next = temp.next
Temp.next = new_node
At End:
Temp = head
While temp.next:
Temp = temp.next
New_node = Node(data)
Temp.next = new_node
Deletion
At Beginning:
Head = head.next
At Position (n):
Temp = head
For _ in range(n-1):
Temp = temp.next
Temp.next = temp.next.next
At End:
Temp = head
While temp.next.next:
Temp = temp.next
Temp.next = None
Insertion
At Beginning:
New_node = Node(data)
New_node.next = head
Head.prev = new_node
Head = new_node
At Position (n):
Temp = head
For _ in range(n-1):
Temp = temp.next
New_node = Node(data)
New_node.next = temp.next
New_node.prev = temp
Temp.next.prev = new_node
Temp.next = new_node
At End:
Temp = head
While temp.next:
Temp = temp.next
New_node = Node(data)
Temp.next = new_node
New_node.prev = temp
Deletion
At Beginning:
Head = head.next
Head.prev = None
At Position (n):
Temp = head
For _ in range(n):
Temp = temp.next
Temp.prev.next = temp.next
Temp.next.prev = temp.prev
At End:
Temp = head
While temp.next:
Temp = temp.next
Temp.prev.next = None
Circular Linked List (CLL)
Insertion
At Beginning:
New_node = Node(data)
New_node.next = head
Temp = head
Temp = temp.next
Temp.next = new_node
Head = new_node
At Position (n):
Temp = head
For _ in range(n-1):
Temp = temp.next
New_node = Node(data)
New_node.next = temp.next
Temp.next = new_node
At End:
Temp = head
While temp.next != head:
Temp = temp.next
New_node = Node(data)
Temp.next = new_node
New_node.next = head
Deletion
At Beginning:
Temp = head
Temp = temp.next
Temp.next = head.next
Head = head.next
At Position (n):
Temp = head
For _ in range(n-1):
Temp = temp.next
Temp.next = temp.next.next
At End:
Temp = head
While temp.next.next != head:
Temp = temp.next
Temp.next = head
Class Node:
Self.data = data
Self.next = None
Class Node:
Self.data = data
Self.next = None
Self.prev = None
Class Node:
Self.data = data
If head is None:
Head = Node(data)
Else:
Temp = head
While temp.next:
Temp = temp.next
Temp.next = Node(data)
If head is None:
Head = Node(data)
Else:
Temp = head
While temp.next:
Temp = temp.next
New_node = Node(data)
Temp.next = new_node
New_node.prev = temp
Circular Linked List (CLL):
If head is None:
Head = Node(data)
Else:
Temp = head
Temp = temp.next
New_node = Node(data)
Temp.next = new_node
New_node.next = head
Deletion
At Beginning:
1. Update head to head.next
At Position (n):
1. Traverse to (n-1)th node.
2. Update (n-1)th node’s next to (n+1)th node.
At End:
1. Traverse to second-last node.
2. Set second-last node’s next = None.
Deletion
At Beginning:
1. Update head to head.next.
2. Set head.prev = None.
At Position (n):
1. Traverse to (n)th node.
2. Update (n-1)th node’s next to (n+1)th node.
3. Update (n+1)th node’s prev to (n-1)th node.
At End:
1. Traverse to last node.
2. Update second-last node’s next = None.
Deletion
At Beginning:
1. Traverse to last node.
2. Update last.next to head.next.
3. Update head to head.next.
At Position (n):
1. Traverse to (n-1)th node.
2. Update (n-1)th node’s next to (n+1)th node.
At End:
1. Traverse to second-last node.
2. Update second-last node’s next to head.