【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ

题目描述:

输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)

输入:

输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。

输出:

对应每个测试案例,
若有结果,输出相应的查找结果。否则,输出NULL。

样例输入:

5 2
1 2 3 4 5
1 0
5
样例输出:

4
NULL

【解题思路】本题虽然提示要用链表来处理,但只要思路一致,链表也没什么,只不过数据结构稍微复杂一点,但由于我的思路完全体现不出需要用链表的必要性,所以还是什么数据结构都不采用的简洁思想。

    先指定第倒数k个元素为k=n-k,不存在则k=-1。然后顺次输入值,若输入到第n-k个元素则记录下该元素,不存在该元素则输出NULL。

AC code:

#include <cstdio>
using namespace std;
 
int main()
{
  int n,k;
  while(scanf("%d%d",&n,&k)!=EOF)
  {
    k=n-k<0?-1:n-k;
    int rc=-1,tt;
    for(int i=0;i<n;++i)
    {
      scanf("%d",&tt);
      if(i==k && k!=-1 && k!=n)
        rc=tt;
    }
    if(rc!=-1)
      printf("%d
",rc);
    else
      printf("NULL
");
  }
  return 0;
}
/**************************************************************
    Problem: 1517
    User: huo_yao
    Language: C++
    Result: Accepted
    Time:90 ms
    Memory:1020 kb
****************************************************************/
题目链接:http://ac.jobdu.com/problem.php?pid=1515

九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299

原文地址:https://www.cnblogs.com/huoyao/p/4248906.html