基本思路
- !!注意链表结构!!想要找到一个元素,只能找到该元素的上一个元素.next获得
反转链表的方法
- 【头插法】:造新链表,把原链表依次 头插到新的链表
- 【递归法】:定义递归方法,明确递归的定义,直接递归,再次强调!!!不要钻到递归里面一个一个尝试!!!
- 【空间法】:直接放到别的数据结构中,如栈、数组
【头插法】
public ListNode reverse(ListNode head){
if(head==null ||head.next==null) return head;
ListNode newList=null;
ListNode tmp=head;
while(tmp!=null){
ListNode nextList=tmp.next;
tmp.next=newList;
newList=tmp;
tmp=nextList;
}
return newList;
}
【递归法】
public ListNode reverse(ListNode head){
if(head==null ||head.next==null) return head;
ListNode newList=reverse(head.next);
head.next.next=head;
head.next=null;
return newList;
}
|