以下のコードを実行してリンクリストから重複を削除しています。しかし、私のコードは、重複を削除する前に、リンクされたリストのみを表示します。 removeDupメソッドが呼び出されると、何も印刷されません。以下は私のコードです。何が欠けているのか教えてください。リンクリストから重複を削除するPython
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
node = Node(data)
node.next=self.head
self.head = node
def printl(self):
current = self.head
while current:
print current.data
current= current.next
def removeDups(self):
current = self.head
while current is not None:
second = current.next
while second:
if second.data == current.data:
current.next = second.next.next
second = second.next
current = current.next
# l.printl()
l= LinkedList()
l.insert(15)
l.insert(14)
l.insert(16)
l.insert(15)
l.insert(15)
l.insert(14)
l.insert(18)
l.insert(159)
l.insert(12)
l.insert(10)
l.insert(15)
l.insert(14)
l.printl()
print "==============="
l.removeDups()
l.printl()
私はまだそれが他の要素をどのようにカットするのか分からなかった。 –
リンクされたリストを紙(またはホワイトボードなど)に書き出すと便利です。 '1 - > 2 - > 3 - > 1 - > 4'のようなリストを試し、アルゴリズムを実行するときに' current'と 'second'の余分な矢印を描きます。たとえば、 'current'が最初のノード(最初の' 1')を指し、 'second'が' 3'ノードを指すとき、2つの '1 'の値が互いに等しいことを確認し、 '3'ノードを' 4'ノードにリンクします(重複する '1'を切り捨てます)。 – Blckknght
ありがとうございました... –