2017-10-18 61 views
0

我想写一个代码片段来删除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 

回答

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 
+0

了解它..非常感谢纠正错误的逻辑部分。 – oneday

相关问题