This python program demonstrates the implementation of various doubly linked list operations using a custom class in Python. Doubly linked lists are data structures that allow elements to be connected in both forward and backward directions.
Problem Statement
Implement a doubly linked list class with the following operations:
- Insert an element at the beginning of the list.
- Insert an element at the end of the list.
- Delete an element from the list.
- Display the elements of the list in forward and backward directions.
Program
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def insert_at_beginning(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
def insert_at_end(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
new_node.prev = current
def delete(self, data):
if not self.head:
return
if self.head.data == data:
if self.head.next:
self.head = self.head.next
self.head.prev = None
else:
self.head = None
return
current = self.head
while current:
if current.data == data:
if current.next:
current.prev.next = current.next
current.next.prev = current.prev
else:
current.prev.next = None
return
current = current.next
def display_forward(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
def display_backward(self):
current = self.head
while current and current.next:
current = current.next
while current:
print(current.data, end=" -> ")
current = current.prev
print("None")
if __name__ == "__main__":
dll = DoublyLinkedList()
dll.insert_at_beginning(3)
dll.insert_at_beginning(2)
dll.insert_at_beginning(1)
dll.insert_at_end(4)
dll.insert_at_end(5)
print("Doubly Linked List (Forward):")
dll.display_forward()
print("Doubly Linked List (Backward):")
dll.display_backward()
dll.delete(3)
dll.delete(5)
print("Doubly Linked List after deletions (Forward):")
dll.display_forward()
How it works
The program defines a Node class to represent elements in the doubly linked list. The DoublyLinkedList class contains methods to perform various operations like insertion, deletion, and display of elements.
Input / Output
