Python链表AttributeError:';非类型';对象没有属性';下一个';

Python链表AttributeError:';非类型';对象没有属性';下一个';,python,linked-list,Python,Linked List,我正试图编写一个程序,从链表中删除重复的值 class Node(object): def __init__(self, data): self.data = data self.next = None class LinkedList(object): def __init__(self): self.head = None def append(self, data): node = self.head i

我正试图编写一个程序,从链表中删除重复的值

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


class LinkedList(object):
    def __init__(self):
        self.head = None

    def append(self, data):
        node = self.head
        if(node == None):
            self.head = Node(data)
            return
        while(node.next):
            node = node.next
        node.next = Node(data)
        return

def removeDups(ll):
    if(ll.head is None):
        return
    headNode = ll.head
    while(headNode):
        lead = headNode
        while(lead.next):
            if(lead.next.data == headNode.data):
                lead.next = lead.next.next
            lead = lead.next
        headnode = headNode.next
    return

list = LinkedList()

list.append(1)
list.append(2)
list.append(3)
list.append(1)

removeDups(list)
错误指向“while(lead.next):”处的行,Arribute错误'NoneType'对象没有属性'next'


我不能为同一个listnode分配两个值吗?headNode和lead指针吗?

这应该适合您。您需要对removeDups功能进行两项更改:

def removeDups(ll):
    if(ll.head is None):
        return
    headNode = ll.head
    while(headNode):
        lead = headNode
        while(lead and lead.next):
            if(lead.next.data == headNode.data):
                lead.next = lead.next.next
            lead = lead.next
        headNode = headNode.next
    return

错误来自这里:while(node.next):node=node.next node.next=node(data)。。。该类(如您所称的LinkedList)没有属性下一个该属性实际上存在于节点模型中,请尝试以下操作:Node()。nodeSetting lead to Node(None)。lead=headNode没有解决此问题。为什么lead的行为与headNode不同?在headNode上,我可以给headNode打电话。下一步,但lead不能以这种方式工作。removeDups应该适用于您的案例。以下是更改后的行:```while(headNode):=>while(lead和lead.next)headNode=headNode.next=>headNode=headNode.next``就是这样做的。非常感谢。