5-19 求链式线性表的倒数第K项 (20分)

5-19 求链式线性表的倒数第K项   (20分)

给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

输入格式:

输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

输出格式:

输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL

输入样例:

4 1 2 3 4 5 6 7 8 9 0 -1

输出样例:

7

http://pta.patest.cn/pta/test/15/exam/4/question/826

// 5-19
#include <cstdio>  
#include <sstream>  
#include <cstring>  
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

#define  N 10001

int k ;
vector<int> v ;
int main()
{
    //freopen("in.txt", "r", stdin);
	scanf("%d" , &k) ;
	int tmp ;
	while(scanf("%d" , &tmp) != EOF && tmp >= 0)
	{
		v.push_back(tmp) ;
	}
	int len = v.size() ;
	int i , j ;
	if(k <= 0 || k > len)
		printf("NULL\n") ;
	else{
		for(i = 0 , j = k ; i < len && j < len ; i ++ ,j ++)
			;
		printf("%d\n" , v[i]) ;
	}
	return 0 ;
}


你可能感兴趣的:(5-19 求链式线性表的倒数第K项 (20分))