为什么元素没有附加到链表中?



未获得预期的输出。缺少数据 = 6 的节点 看起来没有正确插入方法, 找不到问题。 请也建议任何其他问题,因为我刚刚开始使用数据结构。在研究数据结构时有什么需要牢记的。

class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkeList:
def __init__(self):
self.head = None
def push(self,new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head  = new_node
def insertAfter(self,prev_node,new_data):
new_node = Node(new_data)
if self.head is None:
self.head = new_node
return
new_node.next = prev_node.next
prev_node.next = new_node
def append(self,new_data):
new_node = Node(new_data)
if self.head is None:
self.head = new_node
return
last = self.head
while last.next != None:
last = last.next
last.next = new_node
def printList(self):
temp = self.head
while temp is not None:
print(temp.data, end = " ")
temp = temp.next
if __name__ =='__main__':
llist = LinkedList()
llist.append(7)
llist.append(8)
llist.push(5)
llist.insertAfter(Node(5),6)
llist.printList()

所以问题就在这一行,

llist.insertAfter(Node(5),6)

当你执行 insertAfter 时,你需要首先从当前链表中获取一个节点,而不是你正在做的是,你创建一个新节点,然后传递它。该新节点的值可能与 .节点在你的链表中,但它真的不是它的一部分,你需要做的是如下

首先实现一个 get node 函数,它从链表中获取一个具有所需值的节点,如下所示

def getNode(self, value):
temp = self.head
while temp is not None:
if temp.value == value:
return temp
else:
temp = temp.next
return None

然后这样做。

llist.insertAfter(llist.getNode(5),6)

还要检查传递的节点是否不是 无 在插入之后

相关内容

  • 没有找到相关文章

最新更新