从未排序的链表(python)中删除重复项

2024-06-28 20:58:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在我上次删除重复项的代码中,方法removeDup不起作用。 最后一个print(ll.display())正在打印上一个链表。 我希望它只打印唯一的节点。我在removeDups方法中遗漏了什么? 我不明白。这里的代码中发生了什么

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

Tags: selfnonenodedatadefdisplaycurrenthead
1条回答
网友
1楼 · 发布于 2024-06-28 20:58:07

您的removeDup工作正常,问题是65和“65”不是重复的,因此您不应该期望removeDup重复它们。7和“7”也是如此。另外,请注意,您从未定义过insert方法,但我假设这只是一个复制错误

相关问题 更多 >