解答
首先遍历一遍,得到链表的总长度size,然后再正序遍历(size-index)得到倒数第index个节点
/**
* 查找单链表中倒数第k个节点
* 首先遍历一遍,得到链表的总长度size,然后再正序遍历(size-index)得到倒数第index个节点
*
* @param head 链表头节点
* @param index 倒数第index个节点
* @return 返回倒数第index个节点
*/
public static HeroNode findLastNode(HeroNode head, int index) {
if (head == null) {
return null;
}
//得到链表的长度
int size = getLength(head);
//数据校验
if (index > size || index <= 0) {
return null;
}
//定义辅助变量
HeroNode targetNode = head.next;
for (int i = 0; i < size - index; i++) {
targetNode = targetNode.next;
}
return targetNode;
}
测试
//测试一下查找单链表中倒数第k个节点
int index = -1;
System.out.printf("倒数第%d个节点:" + findLastNode(singleLinkedList.getHead(), index), index);
帖子还没人回复快来抢沙发