链表反转:迭代法实现详解及 Python 代码示例
使用迭代的方法来反转链表。具体步骤如下:\n\n1. 初始化三个指针:prev指向当前节点的前一个节点(初始为null),curr指向当前节点,next指向当前节点的下一个节点。\n2. 进行迭代,直到当前节点为null:\n a. 将当前节点的下一个节点保存到next指针。\n b. 将当前节点的next指向prev,完成反转。\n c. 将prev指针移动到当前节点。\n d. 将curr指针移动到next节点。\n3. 反转完成后,将原链表的头节点设置为反转后链表的尾节点(即prev指针所指向的节点)。\n\n以下是具体的代码实现:\n\npython\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.next = next\n\ndef reverseList(head):\n prev = None\n curr = head\n\n while curr is not None:\n next = curr.next\n curr.next = prev\n prev = curr\n curr = next\n\n return prev\n\n# 创建链表 1 -> 2 -> 3 -> 4 -> 5\nhead = ListNode(1)\nnode2 = ListNode(2)\nnode3 = ListNode(3)\nnode4 = ListNode(4)\nnode5 = ListNode(5)\n\nhead.next = node2\nnode2.next = node3\nnode3.next = node4\nnode4.next = node5\n\n# 反转链表\nnew_head = reverseList(head)\n\n# 打印反转后的链表:5 -> 4 -> 3 -> 2 -> 1\ncurr = new_head\nwhile curr is not None:\n print(curr.val, end=" -> ")\n curr = curr.next\nprint("None")\n
\n\n输出结果为:5 -> 4 -> 3 -> 2 -> 1 -> None
原文地址: http://www.cveoy.top/t/topic/p3MD 著作权归作者所有。请勿转载和采集!