如何翻转一个单链表?

例题:假设有一个单链表list,请问如何将它翻转?

分析:我们可以使用迭代或递归的方式来解决这个问题。具体实现时,我们可以定义两个指针pre和cur,分别表示当前节点的前一个节点和当前节点,然后遍历链表,依次将cur的next指向pre,然后将pre和cur向后移动一个节点即可。

Java代码实现:

public static ListNode reverseList(ListNode head) {
    if (head == null) {
        return null;
    }
    ListNode pre = null;
    ListNode cur = head;
    while (cur != null) {
        ListNode next = cur.next;
        cur.next = pre;
        pre = cur;
        cur = next;
    }
    return pre;
}

代码分析:

  • 定义两个指针pre和cur,分别表示当前节点的前一个节点和当前节点。
  • 遍历链表,依次将cur的next指向pre,然后将pre和cur向后移动一个节点。