Supprimer les doublons de la liste liée non triée (python)

Nov 04 2020

Dans mon dernier code pour supprimer les doublons, la méthode removeDupne fonctionne pas. Le dernier print(ll.display())est l'impression de la liste chaînée précédente. J'espérais qu'il n'imprimerait que des nœuds uniques. Que me manque-t-il dans la removeDupsméthode? Je ne peux pas comprendre. Que se passe-t-il dans le code ici?

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

    def __repr__(self):
        return self.data

class LList:
    def __init__(self):
        self.head = None

    def display(self):
        current = self.head
        node = []

        while current != None:
            node.append(current.data)
            current = current.next
        return node

    def append(self, data):
        elem = Node(data)
        if self.head == None:
            self.head = elem
        else:
            current = self.head
            while current.next != None:
                current = current.next
            current.next = elem

    def add_atFront(self, data):
        elem = Node(data)
        if self.head == None:
            self.head = elem
        else:
            elem.next = self.head
            self.head = elem



    def removeDup(self):
        current = self.head
        previous = None
        elems = []
        while current != None:
            if current.data in elems:
                previous.next= current.next
            else:
                elems.append(current.data)
                previous = current
            current = current.next

ll= LList()
print(ll.display())
ll.append(65)
ll.append(7)
ll.add_atFront('65')
ll.add_atFront('Bare')
ll.insert('10',0)
ll.insert('7',2)
print(ll.display())
ll.removeDup()
print(ll.display())

Réponses

1 nullUser Nov 04 2020 at 06:49

Votre travail removeDupfonctionne bien, le problème est que 65 et «65» ne sont pas des doublons, vous ne devriez donc pas vous attendre removeDupà les dédoubler. Il en va de même pour 7 et 7. Notez également que vous n'avez jamais défini la insertméthode, mais je suppose que ce n'est qu'une erreur de copie.