属性错误:'NoneType'对象没有属性'data' - 当我从排序链表中删除重复元素时


def listDistinct(self): 
if self.isListEmpty():
return self.failureValue
else:
currentNode = self.head
while currentNode is not None:
previousNode = currentNode
currentNode = currentNode.next
if currentNode.data == previousNode.data: # Line of Error
previousNode.next = currentNode.next

如何获取链表的最后一个节点与前一个节点的比较只有最后一个元素不会被删除,即使它是重复的。

  • 由于到达了链表的末尾,所以出现了错误。在执行下一步操作后,您不会检查None值。处理此问题的一种方法是检查currentNode是否在while条件下具有下一个值
def listDistinct(self): 
if self.isListEmpty():
return self.failureValue
else:
currentNode = self.head
while currentNode and currentNode.next:
previousNode = currentNode
currentNode = currentNode.next
if currentNode.data == previousNode.data: # Line of Error
previousNode.next = currentNode.next
  • 尝试这个实现,它应该可以工作。上述实现存在逻辑错误。当出现3个或更多相同的数字时,它将跳过元素
def listDistinct(self): 
if self.isListEmpty():
return self.failureValue
else:
currentNode = self.head
while currentNode:
nextNode = currentNode.next
while nextNode and nextNode.data == currentNode.data:
currentNode.next = nextNode.next
nextNode = nextNode.next
currentNode = nextNode

相关内容

  • 没有找到相关文章

最新更新