【689、手写链表翻转】

42 阅读1分钟

以下是手写链表翻转的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为止:

  1. 将next指针指向current的下一个节点
  2. 将current的next指针指向prev节点
  3. 将prev指针指向current节点
  4. 将current指针指向next节点

最终,我们返回prev指针,该指针指向已经翻转后的链表的头部节点。