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

2024-04-20 06:42:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在尝试我认为是一个相当简单的问题,但在编码它,我似乎遇到了一些困难。下面是代码。。。函数“my\u reverse”是我如何编写的,我似乎不明白为什么它不起作用(尽管我确信错误很简单)。函数“reverse”是我在网上找到的一些代码,确实有用。看来我们的方法很相似。另外,在while循环中,当您设置nxt=当前.nxt,然后设置当前.nxt=最后,不是吗nxt.nxt公司=最后?你知道吗

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)

Tags: selfnonenodeismydefvalcurrent
1条回答
网友
1楼 · 发布于 2024-04-20 06:42:40

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

更改:

prev = n
curr = n.nxt

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

而且很有效。你知道吗

相关问题 更多 >