Hapus Duplikat dari daftar Linked yang tidak diurutkan (python)

Nov 04 2020

Dalam kode terakhir saya untuk menghapus duplikat, metode removeDupini tidak berfungsi. Yang terakhir print(ll.display())adalah mencetak daftar tertaut sebelumnya. Saya berharap itu hanya mencetak node unik. Apa yang saya lewatkan dalam removeDupsmetode ini? Saya tidak tahu. Apa yang terjadi pada kode di sini?

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())

Jawaban

1 nullUser Nov 04 2020 at 06:49

Anda removeDupbekerja dengan baik, masalahnya adalah bahwa 65 dan '65' bukan duplikat, jadi Anda tidak boleh berharap removeDupuntuk menghapusnya. Hal yang sama berlaku untuk 7 dan '7'. Juga, perhatikan bahwa Anda tidak pernah menentukan insertmetode, tetapi saya akan menganggap itu hanya kesalahan penyalinan.