2016-03-07 64 views
0

我工作的Codewars卡塔上linkedLists,并不断收到错误AttributeError的:“NoneType”对象有没有属性“数据”LinkedList的AttributeError的:“NoneType”对象有没有属性“数据”

class Node(object): 
    def __init__(self, data): 
     self.data = data 
     self.next = None` 

def push(head, data): 
    if data == None: return 
    new_node = Node(data) 
    new_node.next = head 
    head = new_node 

def build_one_two_three(): 
    head = None 
    push(head, 3) 
    push(head, 2) 
    push(head, 1) 
    return head 

我认为使用if data == None会解决问题,但它没有。任何建议将不胜感激。

+0

何时/何地发生此错误? –

回答

1

您的push函数中的行head = new_node正在替换head指向的本地引用,而不是您的build_one_two_three函数中头指向的数据。尝试有推回头,并更新build_one_two_three每个推送更新referece:head = push(head,1)

0

我猜你正在寻找的东西线:

class Node(object): 
    def __init__(self, data): 
     self.data = data 
     self.next = None 

def push(head, data): 
    if data == None: return 
    new_node = Node(data) 
    new_node.next = head 
    head = new_node 
    return head 

def build_one_two_three(): 
    head = None 
    head = push(head, 3) 
    head = push(head, 2) 
    head = push(head, 1) 
    return head 
# Just to pretty-print the linked list. 
def pp(head): 
    res = "" 
    node = head 
    while node != None: 
     res += "%s -> " % node.data 
     node = node.next 
    res += "None" 
    print res 

if __name__ == "__main__": 
    head = build_one_two_three() 
    pp(head) 

的问题是,你是每次推送新节点时都会覆盖引用head

相关问题