题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
先创建链表,再用双指针,比如要获取倒数第n个,2个指针初始都指向头结点的下一个结点(头结点无数据)
则一个指针先遍历到第n个,另一个不动,然后两个指针一起遍历,直到先出发的指针到达尾结点,那么此时后出发的指针指向的结点就是倒数第n个结点
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = sc.nextInt();
LinkedNode head = new LinkedNode();
LinkedNode temp = head;
for (int i = 0; i < num; i++) {
int cur = sc.nextInt();
LinkedNode curNode = new LinkedNode(cur, null); // 尾插法
temp.next = curNode;
temp = curNode;
}
int n = sc.nextInt();
head = head.next;
LinkedNode target = head;
// 拉开距离
while (n > 0) {
n--;
head = head.next;
}
while (head != null) {
head = head.next;
target = target.next;
}
System.out.println(target.value);
}
}
}
class LinkedNode {
int value;
LinkedNode next;
public LinkedNode() {
}
public LinkedNode(int value, LinkedNode next) {
this.value = value;
this.next = next;
}
}
查看3道真题和解析
