给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
迭代求解:
cur指向当前结点
prev是当前节点的前一个结点,目的就是让cur-->prev
public ListNode reverseList(ListNode head) {
//方法1:迭代,让链表上的节点,依次指向prev,prev和cur一块往后移动,也就是说,cur每次都指向他的上一个节点
ListNode prev=null;
ListNode cur=head;
while (cur!=null) {
ListNode temp=cur.next;
cur.next = prev;
prev = cur;
cur = temp;
}
return prev;
}
递归求解:
public ListNode reverseList2(ListNode head) {
//递归:和迭代思路一样
if (head==null){
return null;
}
/*
错误:
head.next=pre;
pre=head;
reverseList2(head.next);
return pre;*/
ListNode temp=head.next;
head.next=pre;
pre=head;
reverseList2(temp);
return pre;
}