python 中使用链表的属性错误

attribute error using linked lists in python

我是 python 的新手,正在尝试模拟链表的工作原理。我有以下代码:

def mystery(x):
  a , b = x , x.next.next
  while b.next != None:
    a.next.next = b.next
    b.next = a.next
    a.next = b
    a = b
    b = b.next.next

但是当我给它列表 'x' 时,它是 x = ['1','2','3','4', '5'],我得到以下错误:

  File "D:\workspace33\Quizes\src\tests.py", line 3, in mystery
a , b = x , x.next.next
AttributeError: 'list' object has no attribute 'next'

我正在尝试 simulate/visulaize Online Python Tutor 上的程序 但我一直遇到同样的错误。任何人都可以让我知道做错了什么或帮助我理解这个过程。

如果 .next[1] 替换,链表可以用 python 列表实现。这是您的程序如此转换的示例。

def mystery(x):
  a , b = x, x[1][1]
  while b[1] != None:
    a[1][1] = b[1]
    b[1] = a[1]
    a[1] = b
    a = b
    b = b[1][1]
  return a, b

ll = [0, [1, [2, [3, None]]]]
print(mystery(ll))
# ([2, [1, [3, None]]], [3, None])

如果需要,您可以在 运行 从编辑器 window 之前通过打开调试器(在 Shell window 中)在空闲状态下单步执行此程序].当到达打印行时,点击[over]而不是[step](或禁用打印)。