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

Java中的函数:如何实现链表的倒置?

发布时间:2023-06-22 12:38:40

链表是一种常见的数据结构,它由一个个节点组成,每个节点都包含一个数据和一个指向下一个节点的指针。链表的反转是指将链表中的节点按照相反的顺序排列。

在Java中,实现链表的倒置可以使用迭代和递归两种方法。

方法一:迭代方法

考虑到链表中每个节点都包含指向下一个节点的指针,我们可以使用一个pre指针存储当前节点的前一个节点,cur指针指向当前节点,next指针指向当前节点的下一个节点。反转链表的过程可以分为三个步骤:

1. 将当前节点的指针指向前一个节点

2. 将pre指针指向当前节点

3. 将cur指针指向下一个节点

代码实现如下:

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

方法二:递归方法

递归方法的思路是将当前节点的下一个节点反转,并将当前节点指向下一个节点的指针指向前一个节点。在反转当前节点之前,需要将下一个节点保存下来,以便下一次递归调用。

代码实现如下:

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

通过以上两种方法,我们可以实现链表的倒置。这些方法可以应用于各种链表问题,如删除节点、插入节点等,非常实用。