package linerList;
public class Node<T> {
public T data;
public Node next;
public Node() {
}
public Node(T data) {
this.data = data;
}
public Node(T data, Node next) {
this.data = data;
this.next = next;
}
}
快慢指针:
package linerList;
public class FastSlowPointer {
public static void main(String[] args) {
Node<String> aa = new Node<>("aa", null);
Node<String> bb = new Node<>("bb", null);
Node<String> cc = new Node<>("cc", null);
Node<String> dd = new Node<>("dd", null);
Node<String> ee = new Node<>("ee", null);
Node<String> ff = new Node<>("ff", null);
Node<String> gg = new Node<>("gg", null);
Node<String> hh = new Node<>("hh", null);
//现在还不是一个链表,
aa.next = bb;
bb.next = cc;
cc.next = dd;
dd.next = ee;
ee.next = ff;
ff.next = gg;//这样就构建了了一个单向链表
gg.next = hh;
Node mid = getMid(aa);//将首节点穿进去期望收到一个中间值
System.out.println(mid.data);
}
public static Node getMid(Node first) {
Node fast = first;
Node slow = first;
while(fast != null && fast.next!= null){
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
}