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
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