Java函数实现翻转单向链表
题目描述
给定一个单向链表的头节点,实现一个函数用来翻转该链表,并返回翻转后的头节点。
思路分析
要翻转单向链表,可以使用迭代或递归的方法实现。
迭代方法:
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 实现翻转单向链表的两种方法,读者可以结合代码和思路,深入理解翻转链表的过程。
