// 1.获取到单链表的节点的个数(如果有头结点,不统计头结点)
public static int getLength(HeroNode head){
if (head.next == null){
return 0;
}
int length = 0;
//定义一个辅助变量,
HeroNode cur = head.next;
while(cur !=null){
length++;
cur = cur.next;//遍历
}
return length;
}
//查找单链表中的倒数第K个节点【新浪面试题】
//思路
// 1.编写一个方法,节后head节点,同时接收一个index
// 2.index表示倒数第index个节点
// 3.先把链表从头到尾遍历,得到链表的总长度
// 4.得到size后从链表的第一个开始遍历,遍历size-index个就可以得到
// 如果找到了,则返回该节点,否则返回null
public static HeroNode fidLastIndexNode(HeroNode head, int index){
//判断如果为空,则返回null
if (head.next == null){
return null;
}
//第一个遍历得到链表的长度(节点个数)
//先做一个index的校验
int size = getLength(head);
if (index<=0 || index> size){
return null;
}
//定义辅助变量
HeroNode temp = head.next;
//遍历,for循环定位到倒数的index个
for (int i=0; i<size - index; i++){
temp = temp.next;
}
return temp;
}
转载:https://blog.csdn.net/weixin_43736084/article/details/101933128
查看评论