首页 > 其他 > 详细

链表刷题总结

时间:2018-07-09 18:48:41      阅读:163      评论:0      收藏:0      [点我收藏+]
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }

查找一个链表的中间节点:使用快慢指针

  注意:如果用途是对链表的左右分别递归调用时,需要将中间节点的前一个结点的next = null  即需要一个pre结点(注意先要赋null初始化)

ListNode midList(ListNode node){
        if(node == null || node.next == null) return node;
        ListNode slow = node, fast = node;
        ListNode pre = null;
        while(fast != null && fast.next != null){
            pre = slow;
            slow = slow.next;
            fast = fast.next.next;
        }
        pre.next = null;
        return slow;
    }

  

反转一个链表,并返回头结点

ListNode reverse(ListNode node){
        if(node == null || node.next == null) return node;
        ListNode pre = null;
        while(node != null){
            ListNode next = node.next;
            node.next = pre;
            pre = node;
            node = next;
        }
        return pre;
    }

  

 

  

链表刷题总结

原文:https://www.cnblogs.com/SkyeAngel/p/9284991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!