繁体   English   中英

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

[英]Reversing a singly linked list in python… I think I'm misunderstanding how python deals with references

我只是在尝试,尽管那将是一个相当简单的问题,但是在编写代码时,我似乎遇到了一些困难。 下面是代码...函数'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

而且有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM