单双链表的反转

目录

题目一:给定一个单链表的头 head,完成链表的逆序调整

题目二:给定一个双链表的头 head,完成链表的逆序调整

总结


题目一:给定一个单链表的头 head,完成链表的逆序调整

思路:先用 next 记录当前结点的下一个结点的位置;

           再更改当前结点的逆序关系使其指向自己的前一个结点;

           最后修改 pre、head、next至正确位置。

           循环结束条件为 head == null

注:

       (1)由于最后的结果需要使 head 指向逆序前的最后一个结点,所以返回值不能是 void

       (2)不能写成 head = head.next 因为逆序关系的修改先于 head自身的位置修正,

                head  = head.next 会使 head 指向 null

代码:

public static Node reverseLinkedList(Node head){
        Node pre = null;
        Node next = null;
        while(head != null){
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        return pre;
}

 

 

题目二:给定一个双链表的头 head,完成链表的逆序调整

思路:先用 next 记录当前结点的下一个结点的位置;

           再更改当前结点的逆序关系;

           最后修改 pre、head、next至正确位置。

           循环结束条件为 head == null

public static DoubleNode reverseDoubleList(DoubleNode head){
        DoubleNode pre = null;
        DoubleNode next = null;
        while(head != null){
            next = head.next;
            head.next = pre;
            head.last = next;
            pre = head;
            head = next;
        }
        return pre;
}

总结: 

        单双链表的反转先记录后面的环境再修改当前的关系

        涉及换头的函数,返回值不为void

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值