2017-10-18 3 views
0

私は、Pythonのリンクリストで重複した要素を削除するためのスニペットを書こうとしています。チェックノードの値が辞書にあります

私の辞書の前のノードの値を調べる条件が真ではありません。私はなぜそれが常に偽を返すのか理解できません。

ノード値であり、[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

あなたの句は大丈夫かもしれませんが、あなたが再リンクしていない場合。変更:

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

関連する問題