Facebook
From Captain, 1 Month ago, written in Python.
Embed
Download Paste or View Raw
Hits: 157
  1. class LinkedList:
  2.     head = None
  3.    
  4.     class Node():
  5.         element = None
  6.         next_node = None
  7.        
  8.         def __init__(self, element, next_node=None):
  9.             self.element = element
  10.             self.next_node = next_node
  11.            
  12.     def append(self, element):
  13.         if not self.head:
  14.             self.head = self.Node(element)
  15.             return element
  16.         node = self.head
  17.        
  18.         while node.next_node:
  19.             node = node.next_node
  20.         node.next_node = self.Node(element)
  21.        
  22.     def insert(self, element, index):
  23.         i = 0
  24.         node = self.head
  25.         prev_node = self.head
  26.        
  27.         while i < index:
  28.             prev_node = node
  29.             node = node.next_node    
  30.             i+=1
  31.         prev_node.next_node = self.Node(element, next_node=node)
  32.        
  33.         return element
  34.    
  35.     def get(self, index):
  36.         i = 0
  37.         node = self.head
  38.        
  39.         while i < index:
  40.             node = node.next_node    
  41.             i+=1
  42.        
  43.         return node.element
  44.  
  45.     def delete(self, index):
  46.         if index == 0:
  47.             self.head = self.head.next_node
  48.            
  49.         node = self.head
  50.         i = 0
  51.         prev_node = node
  52.        
  53.         while i < index:
  54.             prev_node = node
  55.             node = node.next_node    
  56.             i+=1
  57.         prev_node.next_node = node.next_node
  58.         element = node.element
  59.        
  60.         del node
  61.        
  62.         return element
  63.    
  64.     def print_out(self):
  65.         node = self.head
  66.            
  67.         while node.next_node:
  68.             print(node.element)
  69.             node = node.next_node
  70.         print(node.element)
  71.    
  72.     def get_length(self):
  73.         if not self.head:
  74.             return 0
  75.        
  76.         i = 1
  77.         node = self.head
  78.         while node.next_node:
  79.             i+=1
  80.             node = node.next_node
  81.        
  82.         return i
  83.    
  84.     def find_and_remove_max(self):
  85.         if not self.head:
  86.             return
  87.        
  88.         max_value = self.head.element
  89.         node = self.head
  90.        
  91.         # Поиск максимального значения
  92.         while node:
  93.             if node.element > max_value:
  94.                 max_value = node.element
  95.             node = node.next_node
  96.        
  97.         # Удаление всех элементов, равных максимальному
  98.         prev_node = None
  99.         current_node = self.head
  100.         while current_node:
  101.             if current_node.element == max_value:
  102.                 if prev_node:
  103.                     prev_node.next_node = current_node.next_node
  104.                 else:
  105.                     self.head = current_node.next_node
  106.                 del current_node
  107.                 current_node = prev_node.next_node
  108.             else:
  109.                 prev_node = current_node
  110.                 current_node = current_node.next_node
  111.