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

标签 python reference linked-list

我只是在尝试一个我认为相当简单的问题,但在编码过程中我似乎遇到了一些困难。下面是代码...函数“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

并且它有效。

关于python - 在 python 中反转单链表...我想我误解了 python 如何处理引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292507/

相关文章:

python - 如果找到特定字符串则删除行 Python

python - 类似于telnet的服务器的推荐体系结构(多进程?进程池?)

C++:仿函数的缓存友好性

Java:我的新对象实例化正在更改以前的对象引用

c++ - 将项目添加到链接列表的末尾

Python:如何读取和解析 unicode utf-8 文本文件?

python - Tkinter : Getting screen text unit width.(不是像素)

python - 如何创建不执行任何操作的函数引用

c++ - 指针变量赋值

c - 如何在 C 中存储链表列表?