基本思想:
定义两个指针,一个指针先走(aNode指针)一个指针后走(bNode指针),aNode走K次后,bNode再走。aNode不等于空时,两个指针一起走。当aNode等于空后,让head指向该bNode节点,再输出head(调用输出链表方法)。
代码
/**
* 当前节点类,在堆内存当中创建节点
*/
public class ListNode {
public int value; // 数据域
public ListNode next; // 下一个节点的地址域
public ListNode(int value){
this.value = value;
}
}
public class LinkList {
ListNode head = null;
// 尾插法
public void insert(int value) {
ListNode listNode = new ListNode(value);
if (head == null){
head = listNode;
return;
}
ListNode tempNode = head;
while (tempNode.next !=null){
tempNode = tempNode.next;
}
tempNode.next = listNode;
}
// 输出链表的值
public void printLink() {
//定义右边指向链表当中的第一个节点
ListNode tempNode = he