算法-求反转链表的头节点

版权声明:转载请注明来源 https://blog.csdn.net/tangyuan_sibal/article/details/88544626

输入一个链表,反转链表后,输出新链表的表头。

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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {

        
        if(head==null)
            return null;
        if(head.next==null)
            return head;
        ListNode p,q;
        //将p指向头节点的下一个节点
        p = head.next;
        head.next = null;
        //当p不为空的时候,
        //一直将p插到head前面,而head一直保持为当前的头节点
        //也就是当前插入的p
        //q用来保存下一个节点,作为下一次取值
        while(p!=null)
        {
            q = p.next;
            p.next = head;
            head = p;
            p = q;
        }
        return head;
    }
}

猜你喜欢

转载自blog.csdn.net/tangyuan_sibal/article/details/88544626