// 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个就可以得到// 如果找到了,则返回该节点,否则返回nullpublic static HeroNode fidLastIndexNode(HeroNode head, int index){//判断如果为空,则返回nullif (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;}