【问题标题】:checking node value exists in dictionary检查字典中是否存在节点值
【发布时间】:2017-10-18 17:59:23
【问题描述】:

我正在尝试编写一个 sn-p 用于在 python 中删除链表中的重复元素。

我在字典中检查先前节点值的条件不正确。我无法弄清楚为什么它总是返回 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

【问题讨论】:

    标签: python dictionary linked-list


    【解决方案1】:

    您的 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
    

    【讨论】:

    • 知道了.. 也非常感谢您纠正错误的逻辑部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2019-04-11
    • 2012-01-03
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多