在python中使用链接列表的属性错误

时间:2015-02-23 18:42:16

标签: python-3.x linked-list

是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'

我试图在Online Python Tutor上模拟/推广该程序 但我一直得到同样的错误。任何人都可以让我知道我做错了什么或帮助我理解这个过程。

1 个答案:

答案 0 :(得分:1)

如果.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])

如果需要,可以在编辑器窗口中运行之前打开调试器(在Shell窗口中),在Idle中单步执行此程序。到达打印行时,单击[over]而不是[step](或禁用打印)。