2016-09-21 73 views
0

Python新手,我的代碼通過除輸入1 - > 0之外的所有測試用例,它不返回任何內容而不是1-> 0。這是否與None的價值有關?我的代碼從鏈接列表中刪除重複項有什麼問題?

def RemoveDuplicates(head): 
    if head == None or head.next == None: 
     return 
    else: 
     temp = head 
     while(temp.next != None): 
      if temp.data == temp.next.data: 
       temp.next = temp.next.next 
      else: 
       temp = temp.next 
     return head 
+0

「我的代碼有什麼問題......?」首先 - 縮進 – user3159253

+1

我的猜測是你應該在第一個條件中返回head,而不是僅僅返回,這相當於返回None。 – Karin

+1

另外,注意:永遠不要測試'== None'或'!= None'。 「無」是一個單身人士,並且爲它調用完整豐富的比較機制是浪費。測試'不是None'或'不是None',這是一個身份測試,實際上是C層的指針比較,而不是一組複雜的調用(取決於Python版本)'__coerce__', '__cmp__','__eq__'和/或'__ne__'。 – ShadowRanger

回答

0

嘗試is None而不是== None。應該使用isis not來比較單身人士。

+1

這是一個很好的建議,但它幾乎可以肯定與問題無關,它主要只是一種性能和樣式修復(影響正確性的時間很少,而且很少) 。它實際上沒有解決甚至解決OP的問題。 – ShadowRanger

0

我們看不到頭的類以及它定義了什麼操作,是該類定義的__eq__魔術函數?

可能是head.next == None評估爲head.next.data == None的類?在這種情況下,0 == None的計算結果爲True。

正如其他人所提到的利用head.next is None

這是固定的,我懷疑你是在第一種情況下應該return head不論,但它似乎並不像它應該在這種情況下,除非觸發評價我以上提到正在發生。