欢迎访问宙启技术站
智能推送

Java函数实现翻转单向链表

发布时间:2023-06-23 20:38:06

题目描述

给定一个单向链表的头节点,实现一个函数用来翻转该链表,并返回翻转后的头节点。

思路分析

要翻转单向链表,可以使用迭代或递归的方法实现。

迭代方法:

1. 定义三个指针节点。分别为 preNode(前置节点)、curNode(当前节点)、nextNode(后继节点)。

2. 遍历链表,先将当前节点的后继节点存储在 nextNode 中,防止在修改当前节点的后继节点时丢失后继节点的信息。

3. 将当前节点的后继节点指向前置节点,实现链表的翻转。

4. 将 preNode 和 curNode 往后移动一个节点,每个节点向后移动一个节点后,继续遍历链表,直到 curNode 到达链表尾节点,翻转完成。

递归方法:

1. 先递归翻转子链表,然后再将当前节点的后继节点指向前置节点。

2. 当前节点和前置节点向后移动一个节点。

3. 递归调用翻转函数以实现翻转整个链表。

Java代码实现

迭代方法:

public ListNode reverseList(ListNode head) {

    ListNode preNode = null;

    ListNode curNode = head;

    while (curNode != null) {

        ListNode nextNode = curNode.next;

        curNode.next = preNode;

        preNode = curNode;

        curNode = nextNode;

    }

    return preNode;

}

递归方法:

public ListNode reverseList(ListNode head) {

    if (head == null || head.next == null) {

        return head;

    }

    ListNode newHead = reverseList(head.next);

    head.next.next = head;

    head.next = null;

    return newHead;

}

以上就是 Java 实现翻转单向链表的两种方法,读者可以结合代码和思路,深入理解翻转链表的过程。