本文主要是介绍题目1517:链表中倒数第k个结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 题目描述:
-
输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)
- 输入:
-
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。
- 输出:
-
对应每个测试案例,
若有结果,输出相应的查找结果。否则,输出NULL。
代码:
#include<stdio.h>
#include<stdlib.h>typedef struct Link
{int data;struct Link *next;
}Node;int main()
{int n,k;while(scanf("%d %d",&n,&k) != EOF){if(n == 0)printf("NULL\n");else{int count = 1;//构建链表 Node *head,*p,*s;head = (Node *)malloc(sizeof(Node));scanf("%d",&head->data);head->next = NULL;p = head;for(int i = 1; i < n; i++){s = (Node *)malloc(sizeof(Node));scanf("%d",&s->data);p->next = s;p = s;} p->next = NULL;//得到倒数第K个p = head;while(p != NULL){if(count == n + 1 - k){printf("%d\n",p->data);break;}p = p->next; count++;} if(count > n)printf("NULL\n");}}
}
这篇关于题目1517:链表中倒数第k个结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!