This program includes methods for inserting at the beginning and end, and deleting a specific node by its value.
# ----------------------------------------
# Node Class
# ----------------------------------------
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
# ----------------------------------------
# Doubly Linked List Class
# ----------------------------------------
class DoublyLinkedList:
def __init__(self):
self.head = None
# Insert at the beginning
def insert_at_beginning(self, data):
new_node = Node(data)
new_node.next = self.head
if self.head:
self.head.prev = new_node
self.head = new_node
# Insert at the end
def insert_at_end(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
return
temp = self.head
while temp.next:
temp = temp.next
temp.next = new_node
new_node.prev = temp
# Delete a node by value
def delete(self, key):
temp = self.head
# If head is to be deleted
if temp and temp.data == key:
self.head = temp.next
if self.head:
self.head.prev = None
temp = None
return
while temp and temp.data != key:
temp = temp.next
if temp is None:
print(f"Value {key} not found in the list.")
return
if temp.next:
temp.next.prev = temp.prev
if temp.prev:
temp.prev.next = temp.next
temp = None
# Search for a value
def search(self, key):
temp = self.head
while temp:
if temp.data == key:
return True
temp = temp.next
return False
# Display forward
def display_forward(self):
temp = self.head
print("Forward:", end=" ")
while temp:
print(temp.data, end=" <-> ")
temp = temp.next
print("None")
# Display backward
def display_backward(self):
temp = self.head
if not temp:
print("List is empty.")
return
# Go to last node
while temp.next:
temp = temp.next
print("Backward:", end=" ")
while temp:
print(temp.data, end=" <-> ")
temp = temp.prev
print("None")
# ----------------------------------------
# Testing Doubly Linked List
# ----------------------------------------
if __name__ == "__main__":
dll = DoublyLinkedList()
dll.insert_at_beginning(10)
dll.insert_at_beginning(20)
dll.insert_at_end(30)
dll.insert_at_end(40)
dll.display_forward()
dll.display_backward()
print("\nSearching for 30:", dll.search(30))
print("Searching for 100:", dll.search(100))
print("\nDeleting 20...")
dll.delete(20)
dll.display_forward()
print("\nDeleting 100...")
dll.delete(100)
Comments
Post a Comment