剑指15 - 反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
示例1
输入
{1,2,3}
返回值
{3,2,1}
编码:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
// A ->B ->C
if(head == null) return null;
ListNode pre = null;
ListNode next = null;
// head中
while(head!= null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
思路:
这里只需要定义pre和next,在while循环中,可以倒着思考并验证
1.最后一步必然是 head被赋予新值,有 head=next;
2.倒数2,head必然被赋给了pre
3.倒数3,head必然指向pre
4.第一步,存上next = head.next;