Python链接列表的总和

时间:2017-06-08 04:11:27

标签: python linked-list

这些是我的代码

class Node():
'''A node in a linked list'''
    def __init__(self, data, next_node=None):
        self.data = data
        self.next_node = next_node


def sum(LL):

    head = LL

    # If Linked list is empty, return 0
    if (head.data is None or head.data == []):
        result = 0

    # If Linked List contain only 1 node then return it
    elif (head.next_node is None):
        result = head.data

    else:
        curr = head
        result = curr.data
        # If next is not None then add up to result
        while (curr.next_node is not None):
            curr = curr.next_node
            result += curr.data

    return result

问题出现在代码的末尾

while (curr.next_node is not None):
    curr = curr.next_node
    result += curr.data

如果我试试这个

LL = Node(1, Node(2, 3))
sum(LL)

我不明白为什么说

builtins.AttributeError:' int'对象没有属性'数据'

while循环一直有效,直到到达最后一个节点

结果应为6

3 个答案:

答案 0 :(得分:3)

因为3是您的下一个节点。你可能想要这样的东西:

LL = Node(1, Node(2, Node(3)))

答案 1 :(得分:0)

您指向最后一个不存在的节点。第二个嵌套节点指向下一个节点3,但该节点不存在,它会去寻找它的数据,它无处可寻。

答案 2 :(得分:0)

不同的方法怎么样;创建一个迭代器来迭代链表。那么你有一个标准的迭代器,你可以用内置和函数求和:

{{1}}