Python方法未修改到位



我正试图在Python中从头开始实现一个链表类,遇到了一个可能与Python的工作方式有关的问题,但我想确保这一点。

以下是我实现的基础:

class Node(object):
def __init__(self, data=None, next=None):
self.next = next
self.data = data
def appendToTail(self, d: int):
newNode = Node(d)
while self.next is not None: self = self.next
self.next = newNode

以及不能像我希望的那样工作的类方法:

def reverse(self):
prevNode = None
currentNode = self # current = 1
while self is not None:
nextNode = self.next
self.next = prevNode
prevNode = self
self = nextNode
self = prevNode

我正试图在适当的位置反转链接列表,但当我调用此方法时,列表似乎为空。我还实现了这个方法的另一个版本,它在最后预成型了一个return self,返回的列表确实是我想要的正确结果:

def reverseNotInPlace(n: Node()) -> Node():
prevNode = None
n = n.next
while n is not None:
nextNode = n.next
n.next = prevNode
prevNode = n
n = nextNode
return prevNode

总结:

# creating a linked list such as: [1 -> 2 -> 3]
myList = Node()
myList.appendToTail(1)
myList.appendToTail(2)
myList.appendToTail(3)
# inverting it not in place works
invList = reverseNotInPlace(myList)
# returns [3 -> 2 -> 1]
myList.reverse()
# returns only the first node of myList()

所以我的问题是:我的实现有什么问题吗?或者我想做的事情不完全可能?

非常感谢!

第一种方法存在逻辑错误。Node类不能具有反向方法。因为反转节点实际上没有任何意义。事实上,颠倒链接列表是有意义的。

因此,最好将代码分为两部分:

  1. 您的节点类具有初始化节点的构造函数
  2. 一种链表类,具有将节点追加到末尾和反转链表的功能。同时将链表的头传递给这两个函数

相关内容

  • 没有找到相关文章

最新更新