码迷,mamicode.com
首页 > 其他好文 > 详细

链表刷题总结

时间:2018-07-09 19:25:22      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:||   turn   一个   list   使用   快慢指针   用途   初始化   reverse   

 * 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;
    }

  

 

  

链表刷题总结

标签:||   turn   一个   list   使用   快慢指针   用途   初始化   reverse   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!