题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
//逻辑短路 所以 不会发生 npe
if (head == null || head.next==null){
return head;
}
ListNode first = new ListNode(0);
ListNode cur = head;
first.next = cur;
head = head.next;
first.next.next = null;
//反转链表采用头插法,即每个节点都在头部插入
while (head != null){
cur = head;
head = head.next;
cur.next = first.next;
first.next = cur;
}
return first.next;
}
}