在 python 中反转单向链表...我想我误解了python如何处理引用



我只是在尝试一个我认为相当简单的问题,但在编码过程中,我似乎遇到了一些困难。下面是代码。。。函数"my_reverse"是我对它的编码方式,我似乎不明白为什么它不起作用(尽管我确信错误很简单)。函数"reverse"是我在网上找到的一些代码,它确实有效。我们的方法似乎很相似。此外,在while循环中,当您设置nxt=current.nxt,然后设置current.nxt=last时,这不是使nxt.nxt=last吗?

class Node:
    def __init__(self, val, nxt):
        self.val = val
        self.nxt = nxt
def my_reverse(n):
    if (n.nxt is None):
        return n
    prev = n
    curr = n.nxt
    while (curr is not None):
        nxt = curr.nxt
        curr.nxt = prev
        prev = curr
        curr = nxt
    return prev

def reverse(n):
    last = None
    current = n
    while (current is not None):
        nxt = current.nxt
        current.nxt = last
        last = current
        current = nxt
    return last
def traverse(n):
    iter = n
    while iter != None:
        print iter.val
        iter = iter.nxt
n0 = Node(4, None)
n1 = Node(3, n0)
n2 = Node(2, n1)
n3 = Node(1, n2)
traverse(n3)
l = my_reverse(n3)
traverse(l)

我认为你的方法很好,只是你忘记了终止链表。

更改:

prev = n
curr = n.nxt

prev = n
curr = n.nxt
n.nxt = None

它是有效的。

相关内容

  • 没有找到相关文章

最新更新