链表反转的方法有多种,以下是其中两种常见的方法:
- 迭代法:
-
首先定义三个指针:prev、cur和next,初始时prev为None,cur为链表的头结点,next为cur的下一个节点。
-
在每一次迭代中,将cur的next指针指向prev,然后依次将prev、cur和next向后移动一位。
-
当cur为空时,说明已经遍历完整个链表,此时prev指向反转后的链表的头结点。
-
返回prev。
以下是迭代法的Python实现:
def reverseList(head): prev = None cur = head while cur: next = cur.next cur.next = prev prev = cur cur = next return prev
- 递归法:
-
首先判断链表是否为空或只有一个节点,若是,则直接返回该链表。
-
否则,用递归的方式反转除第一个节点以外的子链表,并将原链表的头结点连接到反转后的子链表的尾部。
-
返回反转后的链表的头结点。
以下是递归法的Python实现:
def reverseList(head): if not head or not head.next: return head reversed_head = reverseList(head.next) head.next.next = head head.next = None return reversed_head
以上两种方法均能实现链表反转,选择其中一种方法来使用即可。