class Node:
def __init__(self,data):
self.data = data
self.pref = None
self.nref = None
class DoublyLL:
def __init__(self):
self.head=None
def print_LL_forward(self):
if self.head is None:
print("Linked List is Empty! ")
else:
n = self.head
while n is not None:
print(n.data , "-->" ,end=" ")
n = n.nref
def print_LL_reverse(self):
print()
if self.head is None:
print("Linked List is Empty! ")
else:
n=self.head
while n.nref is not None:
n = n.nref
while n is not None:
print(n.data , "-->" ,end=" ")
n = n.pref
def insert_empty(self,data):
if self.head is None:
new_node = Node(data)
self.head = new_node
else:
print("LL is not Empty")
def add_begin(self,data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
new_node.nref = self.head
self.head.pref = new_node
self.head = new_node
def add_end(self,data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
n = self.head
while n.nref is not None:
n = n.nref
n.nref = new_node
new_node.pref = n
def add_after(self,data,x):
if self.head is None:
print("LL is empty , so Node cannot be added! ")
else:
n = self.head
while n is not None:
if x==n.data:
break
n = n.nref
if n is None:
print("Node is not present in LL")
else:
new_node = Node(data)
new_node.nref = n.nref
new_node.pref = n
if n.nref is not None:
n.nref.pref = new_node
n.nref = new_node
def add_before(self,data,x):
if self.head is None:
print("LL is empty , so Node cannot be added! ")
else:
n = self.head
while n is not None:
if x==n.data:
break
n = n.nref
if n is None:
print("Node is not present in LL")
else:
new_node = Node(data)
new_node.pref = n
new_node.nref = n.pref
if n.pref is not None:
n.pref.nref = new_node
else:
self.head = new_node
n.pref = new_node
dl1 = DoublyLL()
dl1.add_begin(30)
dl1.add_end(50)
dl1.add_before(40,30)
dl1.print_LL_forward()
dl1.print_LL_reverse()
Why is this program printing continuously in a loop rather than displaying it for only a single time?
It always crashes my compiler.