206反转链表

1:递归方法

1--》2--》3 到 3--》2--》1返回末尾3节点,3节点next置为2,2节点next置为null;2节点next置为1,1节点next置为null

    public ListNode reverseList(ListNode head){
        if(head==null||head.next==null){
            return head;
        }
        ListNode p =reverseList(head.next);
        head.next.next=head;
        head.next=null;
        return p;
    }

2:遍历直接逐个替换next

借助第三个变量存储原来的下一个next值,便于三个变量之间的置换位置

    public ListNode reverseList(ListNode head) {
        ListNode pre =null;
        ListNode cur =head;
        while (cur!=null){
            ListNode temp =cur.next;
            cur.next=pre;
            pre=cur;
            cur=temp;
        }
        return pre;
    }

上一篇:NC33 合并两个排序的链表


下一篇:剑指offer刷题题解——JZ6—— 从尾到头打印链表