Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Linkedlist删除不带缓冲区的重复项_Python_Linked List - Fatal编程技术网

Python Linkedlist删除不带缓冲区的重复项

Python Linkedlist删除不带缓冲区的重复项,python,linked-list,Python,Linked List,我正在尝试实现一种算法,以从linkedlist中删除重复项,但在检查当前节点的数据是否与下一个节点的数据相等时,我的算法冻结 class Node: def __init__(self, data, next): self.data = data self.next = next class LinkedList: def __init__(self, head = None): self.head = head def ad

我正在尝试实现一种算法,以从linkedlist中删除重复项,但在检查当前节点的数据是否与下一个节点的数据相等时,我的算法冻结

class Node:
    def __init__(self, data, next):
        self.data = data
        self.next = next

class LinkedList:
   def __init__(self, head = None):
      self.head = head

   def add(self, item):
      newNode = Node(item, self.head)
      self.head = newNode

   def printit(self):
      current = self.head
      while current is not None:
         print(current.data)
         current = current.next

   def removeDuplicates(self):
      current = self.head
      while current != None:
         runner = current
         while runner.next != None:
            if runner.next.data == current.data:
               runner.next = current.next.next
            else:
               runner = current.next
         current = current.next




mylist = LinkedList()

mylist.add(31)
mylist.add(77)
mylist.add(31)
mylist.add(22)
mylist.add(22)
mylist.add(22)

mylist.printit()
mylist.removeDuplicates()
mylist.printit()
这可能真的很傻,但我现在看不出来,有什么想法吗?

在你的while循环中:

runner = current.next
应该是

runner = runner.next

否则它只会在每次迭代中保持相同的
current.next
,因为它在循环中从不改变
current
。前面几行也是一样。

你说得对!泰。事实上,我很困惑,我创造了跑步者来避免改变外环的指针,然后在我的脑海中出现了“电流”的想法。用一双新的眼睛来观察这些东西总是比较容易的。在调试器中单步执行是值得的,特别是当你无法让别人检查你的代码时,看看现实和你的期望是什么。下一步=当前。下一步。下一步也应该是
runner.next=runner.next。下一步
next
是python关键字。使用其他名称以避免混淆。