首页 > 代码库 > 快慢指针原理--快速找到未知长度单链表的中间节点
快慢指针原理--快速找到未知长度单链表的中间节点
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);
快慢指针原理--快速找到未知长度单链表的中间节点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。