正在检查字典中是否存在节点值

2024-04-16 23:25:33 发布

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

我正在尝试编写一个片段,用于在python中删除链表中的重复元素。你知道吗

我检查字典中以前的节点值的条件不是true。我不明白为什么它总是返回false。你知道吗

节点值为[0->;1->;2->;2->;3->;4->;4->;5

def RemoveRepeatNode(self):
    curr_node = self.head
    unique_list = {}
    unique_list[curr_node.data] = 1

    while(curr_node.next != None):
        if curr_node.next.data in unique_list: ## doesn't evaluate to True
            print "repeated values ", curr_node.next.data
            curr_node = curr_node.next.next
        else:
            unique_list[curr_node.data] = 1
            curr_node = curr_node.next

Tags: gtselfnodefalsetrue元素data字典
1条回答
网友
1楼 · 发布于 2024-04-16 23:25:33

你的if子句也许可以,但你不需要重新链接。更改:

def RemoveRepeatNode(self):
    curr_node = self.head
    unique = {curr_node.data}  # better data structure: set

    while(curr_node.next != None):
        if curr_node.next.data in unique:
            curr_node.next = curr_node.next.next
            #        ^^^^^  relink!
        else:
            unique.add(curr_node.next.data) 
            # add .next.data         ^^^^^  that's the one you checked
            curr_node = curr_node.next

相关问题 更多 >