classListNode(): def__init__(self, val): self.val = val self.next = None
def__str__(self): returnstr(self.val)
defcreateList(value_list: list) -> ListNode: """ Create Linked List based on list :param value_list: list :return: NodeList """ _len = len(value_list) if _len == 0: returnNone if _len == 1: return ListNode(value_list[0]) else: root = ListNode(value_list[0]) tmp = root for i inrange(1, _len): tmp.next = ListNode(value_list[i]) # 声明当前节点,再把当前节点与前面节点联系在一起。 tmp = tmp.next# 更新tmp为下一个节点 return root # 返回根节点
defprintList(head: ListNode): """ Print single node one by one in linked list :param head: ListNode :return: None """ p = head while p != None: # print() print(p) # 由于有ListNode实现了__str__函数 就不用调用p.val来获取节点值了 p = p.next
deflistLength(head: ListNode) -> int: """ Get the length of linked list :param head: ListNode :return: int """ count = 0 p = head while p != None: count += 1 p = p.next return count
classSolution: defdeleteDuplicates(self, head: ListNode) -> ListNode: ifnot head: returnNone dummy = ListNode(None) # 声明哑结点 dummy.next = head # head肯定不会变 p = head while p and p.next: if p.val == p.next.val: p.next = p.next.next else: p = p.next return dummy.next