我正在尝试插入另一个项目,但是我的代码不起作用。以下函数insert_after_another
不起作用。
class LinkedList:
def __init__(self):
self.head = None
def insert_end(self,data):
x = Node(data)
if self.head == None:
self.head = x
return
temp = self.head
while(temp.next != None):
temp = temp.next
temp.next = x
def insert_after_another(self,old_data,new_data):
t_old = Node(old_data)
d_new = Node(new_data)
temp = self.head
while(temp):
if temp.data == old_data:
d_new.next = t_old.next
t_old.next = d_new
temp = temp.next
class Node:
def __init__(self,data):
self.data = data
self.next = None
if __name__=='__main__':
llist = LinkedList()
llist.insert_end(3)
llist.insert_end(32)
llist.insert_after_another(3,13)
尝试打印数据时没有任何结果。
答案 0 :(得分:1)
d_new.next = t_old.next
t_old.next这行什么都没有指向,也没有指向它的指针,它只是您之前创建的一个节点。
def insert_after_another(self,old_data,new_data):
d_new=Node(new_data)
temp=self.head
while(temp):
if temp.data==old_data:
d_new.next = temp.next
temp.next = d_new
break
我认为这可能有效。 您只需要两次交换, 新节点应指向旧节点的下一个节点, 旧节点应指向新节点。
答案 1 :(得分:0)
这将能够解决您的问题。考虑使用正确的标识并重命名您的方法。
def insert_after_value(self, old_data, new_data):
if self.head is None:
return
if self.head.data == old_data:
self.head.next = Node(new_data, self.head.next)
return
temp = self.head
while temp:
if temp.data == old_data:
temp.next = Node(new_data, temp.next)
break
temp = temp.next