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

快慢指针原理--快速找到未知长度单链表的中间节点

时间:2016-11-28 23:23:33      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:node   new   code   快慢指针   print   span   log   快速   --   

package com.java.dataStruct;

//节点类
public class Node<E> {
    
    E item;
    Node next;
    public Node(){
    }
    public Node(E element){
        this.item = element;
    }
    public Node(E element, Node next){
        this.item = element;
        this.next = next;
    }
    

}
     Node p1,r1;
        
        Node L1 = new Node<String>("head");
        r1 = L1;
        
        // 先利用尾插法创建一个链表
        for(int i=1; i<=20; i++){
            p1 = new Node<String>();
            p1.item = "value"+i;
            
            r1.next = p1;
            r1 = p1;
        }
        r1.next = null;
        
        
//        while(L1.next != null){
//            //System.out.p1r1intln(L.item);
//            System.out.println(L1.next.item);
//            L1 = L1.next;
//        }
  
        
        /*
         * 快速找到未知长度单链表的中间节点
         * 
         * 快慢指针原理
         * 设置两个指针 search,mid都指向单链表的头节点。
         * 其中search的移动速度是mid的2倍。
         * 当search指向末尾节点的时候,mid正好就在中间了。
         */
        Node search,mid;
        search = L1;
        mid = L1;
        for(;search.next != null;){
            if(search.next.next != null){
                search = search.next.next;
                mid = mid.next;
            }else{
                search = search.next;
            }
        }
        System.out.println("结果: "+mid.item);

 

快慢指针原理--快速找到未知长度单链表的中间节点

标签:node   new   code   快慢指针   print   span   log   快速   --   

原文地址:http://www.cnblogs.com/wwzyy/p/6111636.html

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