Insert Into Linked List Subject to Certain Condition



Input = [4,0,5,1,6,1,7,0,9,0]
Output = 9 7 4 5 6
Details: If 0 then insert at the beginning of its previous element

If 1 then insert at the last of its previous element 

class Node:
def __init__(self):
self.info = None
self.prev = None
self.next = None

class doubly_llist:
def __init__(self):
self.start = Node()
self.start = None

def add_begin(self,value):

if self.start == None:
self.temp = Node()
self.temp.info = value
self.temp.next = None
self.temp.prev = None
self.start = self.temp
else:
self.temp = Node()
self.temp.info = value
self.temp.next = self.start
self.start.prev = self.temp
self.start = self.temp
def add_last(self,value):
if self.start == None:
self.temp = Node()
self.temp.info = value
self.temp.next = None
self.temp.prev = None
self.start = self.temp
else:
self.p = self.start
i = 0
while self.p.next is not None and i < 20:
self.p = self.p.next
i = i + 1
self.temp = Node()
self.temp.info = value
self.temp.next = None
self.temp.prev = self.p
self.p.next = self.temp

def display_list(self):
self.q = Node()
if self.start == None:
print("List is empty:")
return
self.q = self.start
print("The list is: ")
while self.q is not None:
print(self.q.info,end=' ')
self.q = self.q.next
print("\n")

if __name__ == "__main__":
array = [4,0,5,1,6,1,7,0,9,0]
dl = doubly_llist()
for i in range(0,len(array)-1):
if array[i+1] == 0:
dl.add_begin(array[i])
elif array[i+1] == 1:
dl.add_last(array[i])
dl.display_list()

Comments