如何使用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实现链表反转函数的方法。
