gpt4 book ai didi

python - 如何修复单链表方法追加中的错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:26 25 4
gpt4 key购买 nike

我有两个类,一个是节点,一个是链接。我的错误来自位于linkedList 类 中的append 方法。

我尝试.append(10),但是当它应该 append 到末尾时,它不会打印出10,而只打印出5。偶然有人能看到这个错误吗?

class Node:
def __init__(self, data):
self.data = data
self.next = None
class linkedList:
def __init__(self):
self.head = None
def append(self, data):
newNode = Node(data)
if self.head == None:
self.head = newNode
return
else:
lastNode = self.head
while lastNode.next != None:
lastNode = lastNode.next
lastNode.next = newNode
def prepend(self, data):
newNode = Node(data)
if self.head == None:
self.head = newNode
return
else:
newNode.next = self.head
self.head = newNode
def insertAfterNode(self, prevNode, data):
newNode = Node(data)
newNode.next = prevNode.next
prevNode.next = newNode
def printList(self):
curNode = self.head
while curNode.next != None:
print(curNode.data)
curNode = curNode.next
def deleteNode(self, key):
curNode = self.head
if curNode != None and curNode.data == key:
self.head = curNode.next
curNode = None
return
else:
prev = None
while curNode != None and curNode.data != key:
prev = curNode
curNode = curNode.next
if curNode == None:
print("The data is not found in the list")
return
else:
prev.next = curNode.next
curNode = None

# Testing the Linked List
linkedLst = linkedList()
linkedLst.append(5)
linkedLst.append(10)
linkedLst.printList()
linkedLst.prepend(15)
linkedLst.printList()
linkedLst.insertAfterNode(linkedLst.head.next, 6)
linkedLst.insertAfterNode(linkedLst.head.next.next, 8)
linkedLst.printList()
linkedLst.deleteNode(6)
linkedLst.deleteNode(20)
linkedLst.printList()

预期结果应为 5 10, 15 5 10, 15 6 8 5 10, 15 8 5 10,然后出现错误消息,指出无法删除。但是,我得到 5, 15 5, 15 6 8 5, 15 8 5 并且它排除了 10.我正在 vim 上运行并且有 python 3.7.4

最佳答案

如果您查看方法 printList,就会发现当 curNode.nextNone 时,即 curNode 时,while 循环停止code> 是最后一个节点。最后一个节点没有得到要打印的更改。元素 10 在那里,只是没有被打印。

此外,这只是一件小事,最好使用大写字母作为类名,这样您的代码就与 recommended style guide 一致。 .

关于python - 如何修复单链表方法追加中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com