コード例 #1
0
 def insert_after(self, current_node_item, new_node_item):
     tmp = self._first
     while tmp:
         if tmp.val == current_node_item:
             old_next_node = tmp.next_node
             new_node = Node(new_node_item)
             tmp.next_node = new_node
             new_node.next_node = old_next_node
             self._size += 1
             break
         tmp = tmp.next_node
コード例 #2
0
 def insert_after(self, current_node_item, new_node_item):
     tmp = self._first
     while tmp:
         if tmp.val == current_node_item:
             old_next_node = tmp.next_node
             new_node = Node(new_node_item)
             tmp.next_node = new_node
             new_node.next_node = old_next_node
             self._size += 1
             break
         tmp = tmp.next_node
コード例 #3
0
 def add_element(self, element, index=-1):
     # 实例化元素node
     element_node = Node(element)
     if not self.head:  # 空链表添加
         # 执行插入逻辑
         self.head, self.tail = element_node, element_node
     else:
         if -1 == index:  # 末尾添加
             if self.tail:
                 # 执行插入逻辑
                 self.tail.next_node, self.tail = element_node, element_node
             else:
                 self.get_end_node()
                 # 执行插入逻辑
                 self.tail.next_node, self.tail = element_node, element_node
                 pass
             pass
         else:  # 指定位置添加
             end_index = self.size - 1
             if end_index < index:  # index位置 > 链表长度, 执行末尾添加
                 self.add_element(element=element)
                 pass
             elif end_index == index:  # 末尾之前添加node
                 pre_node, end_node = self.get_end_node()
                 # 执行插入逻辑
                 pre_node.next_node, element_node.next_node = element_node, end_node
                 self.tail = end_node
                 pass
             else:
                 idx = 0
                 pre_node, temp_node = self.head, self.head
                 while (idx + 1) != index:  # fixme
                     temp_node = temp_node.next_node
                     idx += 1
                     pass
                 # 执行插入逻辑
                 element_node.next_node, temp_node.next_node = temp_node.next_node, element_node
                 pass
             pass
         pass
     pass
     self.size += 1
     return self