单链表反转

题目:输入一个单链表,反转该单链表

思路:用head保存当前位置,利用前驱和后继指针来保存上一个和下一个指针

记住4个步骤:

1,先保存head.next 不然断链了

2,反转链表

3,pre前移到head的位置

4,head前移到next的位置

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
<span style="white-space:pre">	</span>if(head==null)
            return null;
        ListNode pre = null;
        ListNode next = null;
        //将head作为当前指针来移动
        while(head!=null){
            //第一步先保存head.next,避免断链
            next=head.next;
            //第二步将链表反转
            head.next=pre;
            //第三步pre指针前移
            pre=head;
            //第四步head指针前移
            head=next;
        }
        //此时head已经为空,所以返回他的前驱就行
        return pre;
    }
}



你可能感兴趣的:(单链表反转)