以下是手写链表翻转的Java代码示例:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode current = head;
while (current != null) {
ListNode next = current.next;
current.next = prev;
prev = current;
current = next;
}
return prev;
}
}
在这个示例中,我们定义了一个ListNode类来表示链表节点,该节点包含一个整数值和指向下一个节点的指针。
我们在Solution类中实现了reverseList方法来翻转链表。该方法采用迭代的方式,通过使用三个指针来遍历链表并将节点指针方向翻转。prev指针指向上一个节点,current指针指向当前节点,next指针指向下一个节点。我们重复执行以下步骤,直到current指向null为止:
- 将next指针指向current的下一个节点
- 将current的next指针指向prev节点
- 将prev指针指向current节点
- 将current指针指向next节点
最终,我们返回prev指针,该指针指向已经翻转后的链表的头部节点。