Trying to learn Data Structures in Python, implementing doubly linked list. When I am trying to insert a new element after an element, it is ending up in a continuous loop. Please try to explain where I am going wrong and why is it ending it continuous loop.
I am posting my entire code here but the issue is at insertAt. Please help.
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
class Double_list:
def __init__(self):
self.head = None
def beginning(self, data):
node = Node(data)
if not self.head:
self.head = node
else:
temp = self.head
node.next = temp
temp.prev = node
def addelement(self, data):
node = Node(data)
if not self.head:
self.beginning(data)
return
temp = self.head
last = temp
while temp.next:
temp = temp.next
temp.next = node
node.prev = temp
def ending(self, data):
self.addelement(data)
def insertAt(self, data, after=None):
node = Node(data)
temp = self.head
while temp and after:
import pdb; pdb.set_trace()
last = temp
temp = temp.next
if last.data == after:
last.next = node
node.prev = last
node.next = temp
temp.prev = node
def remove(self,data):
temp = self.head
while temp:
if temp.data == data:
break
last = temp
temp =temp.next
last.next = temp.next
temp.next.prev = last
def printll(self):
temp = self.head
while temp:
print (temp.data, end=" ")
temp = temp.next
obj = Double_list()
obj.beginning(1)
obj.addelement(2)
obj.ending(3)
obj.insertAt(data=4,after=1)
obj.remove(2)
obj.printll()
insertAthave abeforeparameter? It is never used... Please also provide the (minimal) driver code with which the problem is reproduced.insertAtintended to insert multiple nodes whenafteroccurs multiple times in the list?