第一种方法:通过头插法反转单链表
public ListNode reverse1(){
ListNode cur=this.head.next;
ListNode newHead=this.head;
newHead.next=null;
while(cur!=null){
ListNode node=cur.next;
cur.next=newHead;
newHead=cur;
cur=node;
}
return newHead;
}
第二种方法:原地反转
public ListNode reverse2(){
ListNode prev=null;
ListNode newHead=null;
ListNode cur=this.head;
while(cur!=null){
ListNode curNext=cur.next;
if(curNext==null){
newHead=cur;
}
cur.next=prev;
prev=cur;
cur=curNext;
}
return newHead;
}