一、知识点
不确定输入的数据有多少组时,可以用 if(scanf()>0) 作为判断条件
如果要处理多组数据,不一定要为每组数据申请空间。可以存储一组,处理一组,存储数据的空间清零之后继续存储下一组数据。额外申请空间,存储每组数据的处理结果。
二、题目
1、描述
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode { int m_nKey; ListNode* m_pNext; };
正常返回倒数第k个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足 1≤𝑛≤1000 , 𝑘≤𝑛 ,链表中数据满足 0≤𝑣𝑎𝑙≤10000
本题有多组样例输入。
2、输入
输入说明
(1) 输入链表结点个数
(2) 输入链表的值
(3) 输入k的值
3、输出
输出一个整数
三、自己写的代码
#include<stdio.h>
int main() {
int line[1000];
int res[100];
int n, k, i, count = 0;
while (scanf("%d", &n) > 0) {
for (i = 0; i < n; i++) {
scanf("%d", &line[i]);
}
scanf("%d", &k);
if (k < 0 || k > n) {
res[count++] = 0;
} else {
res[count++] = line[n - k];
}
for (i = 0; i < 1000; i++) {
line[i] = 0;
}
}
for (i = 0; i < count; i++) {
printf("%d\n", res[i]);
}
return 0;
}