Python Связанные списки AttributeError: у объекта 'NoneType' нет атрибута 'next' - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь написать программу для удаления повторяющихся значений из связанного списка

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 'У объекта нет атрибута' следующий '

Не могу ли я присвоить два значения одному и тому же узлу списка? Являются ли headNode и ведущие указатели?

1 Ответ

1 голос
/ 17 февраля 2020

Это должно работать для вас. Вам нужно два изменения в вашей функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...