刷题地址
- 思路
题目要求反转链表,可以简单用三个元素的关系进行分析。head,head的前一个元素(pre),head的后一个元素(next)。反转前,pre -> head -> next;反转后,pre <- head <- next。反转链可以这样进行操作:pre <- head,将head.next指向pre,但是考虑到直接简单这样指向会发生断链的情况,所以在指向之前必须用next暂存head.next。此后head.next成为新的head,依次重复,即可完成整个链的反转。 - 代码(JAVA)
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null)
return null;
ListNode pre = null; //head前一个结点
ListNode next = null; //head后一个结点
while(head!=null) { //没有遍历到最后一个结点,执行循环
next = head.next; //暂存head指向的后一个结点,防止断链
head.next = pre; //反转链
pre = head; //后移,反转后面的链
head = next;
}
return pre; //循环遍历结束pre会到需要反转的最后一个结点位置,输出pre即可输出反转后的链表
}
}
- 如有错处或者更好的解法,欢迎评论区讨论ovo 感谢



