kompilainenn

linked_list

Aug 19th, 2025
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.95 KB | None | 0 0
  1. class LinkedList():
  2.     def __init__(self):
  3.         self.start = None
  4.         self.finish = None
  5.         self.lenght = 0
  6.        
  7.     def __len__(self):
  8.         return self.lenght
  9.        
  10.     def __str__(self):
  11.         if self.lenght == 0:
  12.             return 'Empty LinkedList'
  13.         arr = ''
  14.         temp = self.start
  15.         for _ in range(self.lenght):
  16.             arr += temp.data + '\n'
  17.             if temp.next is None:
  18.                 return arr
  19.             temp = temp.next
  20.        
  21.     def add_object_to_end(self, new_object):
  22.         if self.start == None:
  23.             self.start = new_object
  24.             self.finish = new_object
  25.         else:
  26.             new_object.prev = self.finish
  27.             self.finish.next = new_object
  28.             self.finish = new_object
  29.         self.lenght += 1
  30.        
  31.     def add_object_to_begin(self, new_object):
  32.         if self.start == None:
  33.             self.start = new_object
  34.             self.finish = new_object
  35.         else:
  36.             new_object.next = self.start
  37.             self.start.prev = new_object
  38.             self.start = new_object
  39.         self.lenght += 1
  40.        
  41.     def delete_object(self, object_data):
  42.         obj = self.is_object(object_data)
  43.         if self.lenght == 0:
  44.             print('LinkedList is already empty')
  45.         elif obj == self.finish:
  46.             self.finish = obj.prev
  47.             self.finish.next = None
  48.             self.lenght -= 1
  49.             print('Object was deleted')
  50.         elif obj == self.start:
  51.             self.start = obj.next
  52.             self.start.prev = None
  53.             self.lenght -= 1
  54.             print('Object was deleted')
  55.         elif obj:
  56.             obj.prev.next = obj.next
  57.             obj.next.prev = obj.prev
  58.             self.lenght -= 1
  59.             print('Object was deleted')
  60.         elif not self.is_object(object_data):
  61.             print('LinkedList has no that object')
  62.        
  63.     def is_object(self, object_data):
  64.         if self.lenght == 0:
  65.             return False
  66.         temp = self.start
  67.         for _ in range(self.lenght):
  68.             if temp.data == object_data:
  69.                 return temp
  70.             if temp.next is not None:
  71.                 temp = temp.next
  72.             elif temp.next is None and temp.data == object_data:
  73.                 return temp
  74.         return False
  75.        
  76. class LinkedListObject:
  77.     def __init__(self, data):
  78.         self.prev = None
  79.         self.next = None
  80.         self.data = data
  81.  
  82.    
  83. obj1 = LinkedListObject('data1')
  84. obj2 = LinkedListObject('data2')
  85. obj5 = LinkedListObject('data5')
  86. obj6 = LinkedListObject('data6')
  87. obj7 = LinkedListObject('data7')
  88. l_list = LinkedList()
  89. l_list.add_object_to_end(obj1)
  90. l_list.add_object_to_end(obj2)
  91. l_list.add_object_to_end(obj5)
  92. l_list.add_object_to_begin(obj6)
  93. print(len(l_list))
  94. print(l_list)
  95. l_list.delete_object('data2')
  96. print(len(l_list))
  97. print(l_list)
  98. l_list.add_object_to_end(obj7)
  99. print(len(l_list))
  100. print(l_list)
Advertisement
Add Comment
Please, Sign In to add comment