可以使用迭代的方法来反转单链表。具体来说,我们可以使用三个指针来完成:
- 当前节点指针 curr:指向当前处理的节点
- 下一个节点指针 next:指向当前节点的下一个节点
- 前一个节点指针 prev:指向当前节点的上一个节点
我们从头结点开始,一直遍历到链表的尾节点。在每一次遍历时,我们将当前节点的下一个节点记录下来,然后将当前节点的指针指向它的上一个节点,然后将三个指针向后移动一步。最后,我们将新的头结点设置为原来的尾节点,并返回新的头结点。
以下是 Java 代码示例:
/**
* Definition for singly-linked list.
* public class ListNode {
*int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
// 前一个节点指针
ListNode prev = null;
// 当前节点指针
ListNode curr = head;
while (curr != null) {
// 下一个节点指针
ListNode next = curr.next;
// 反转指针
curr.next = prev;
// 向后移动指针
prev = curr;
curr = next;
}
// 设置新的头结点
head = prev;
return head;
}
}