classListNode(): def__init__(self, value): self.val = value 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 # 返回根节点
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
defconvert2list(head: ListNode) -> list: """ Convert linked list to normal list :param head: ListNonde :return: list """ res = [] p = head while p != None: res.append(p.val) # 由于有ListNode实现了__str__函数 就不用调用p.val来获取节点值了 p = p.next return res
if __name__ == "__main__": solution = Solution() for i inrange(len(Input)): print("-"*50) result = solution.swapPairs(createList(Input[i])) print(convert2list(result)) print(Answer[i])
classSolution: defswapPairs(self, head: ListNode) -> ListNode: # Dummy node acts as the prevNode for the head node # of the list and hence stores pointer to the head node. dummy = ListNode(-1) # 声明哑节点 dummy.next = head # 哑结点与head互联
# Reinitializing the head and prev_node for next swap prev_node = first_node # prev_node永远在等待替换的first_node前面 head = first_node.next# 更新third_node为新的head