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

如何使用Java实现链表反转函数

发布时间:2023-07-26 11:25:35

要实现链表的反转函数,可以通过迭代或递归的方式来实现。下面我们分别介绍这两种方法。

1.迭代法:

迭代法是通过循环来实现链表的反转。具体步骤如下:

- 定义三个指针:prev、curr和next。初始时,prev指向null,curr指向链表头结点。

- 进入循环,重复以下步骤,直到链表的最后一个结点:

- 保存curr的下一个结点为next。

- 将curr的next指针指向prev。即将当前结点的指针方向反转。

- 移动prev和curr指针,将它们分别向后移动一个位置。

- 最后,将原链表的头结点的next指针指向null,prev成为新链表的头结点。

以下是使用迭代法实现链表反转的Java代码示例:

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class LinkedListReverse {
    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;
        }
        return prev;
    }
}

2.递归法:

递归法是通过递归调用来实现链表的反转。具体步骤如下:

- 先反转除去头结点的子链表。

- 再将头结点插入到反转后的子链表的末尾。

以下是使用递归法实现链表反转的Java代码示例:

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class LinkedListReverse {
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode next = head.next;
        ListNode newHead = reverseList(next);
        next.next = head;
        head.next = null;
        return newHead;
    }
}

以上就是使用Java实现链表反转函数的方法。