
解法1. 哑节点前插
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null || head.next==null)
return head;
ListNode dummy = new ListNode(-1);
while(head!=null){
ListNode p = head.next;
head.next = dummy.next;
dummy.next = head;
head = p;
}
return dummy.next;
}
}
解法2. 递归
首先逐个节点拆分,然后每两个节点进行方向颠倒。
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null || head.next==null)
return head;
ListNode reverseHead = ReverseList(head.next);
head.next.next = head;
head.next=null;
return reverseHead;
}
}
本文介绍两种链表逆序的方法:哑节点前插法和递归法。前者通过创建一个哑节点来辅助实现链表逆序,后者则利用递归特性逐个节点拆分并反转指向。
499

被折叠的 条评论
为什么被折叠?



