206. 反转链表
题目
反转一个单链表。
解题思路
注意不要跳进递归,而是用递归的定义来解决问题。
详细思路见书284
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode last=reverseList(head.next);
//让反转后的链表头节点指向它前面的那个节点
head.next.next=head;//一般两个next连用:head.next代表节点.next代表指针。
head.next=null;
return last;
}
}