给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。
输入格式:
输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。
输出格式:
输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL
。
输入样例:
4 1 2 3 4 5 6 7 8 9 0 -1
输出样例:
7
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int ElemType;
typedef struct DuLNode
{
ElemType data;
struct DuLNode *prior,*next;
}DuLNode ,*DuLinkList;
DuLinkList PutL()
{
DuLNode head;
DuLinkList L = &head;
L->data = -1;
head.next = NULL;
int n;
while(1)
{
cin>>n;
if(n>=0)
{
L->next = (DuLinkList)malloc(sizeof(DuLNode));
L->next->data = n;
if(L)
{
L->next->prior = L;
}
L = L->next;
}
else
break;
}
L->next = NULL;
return L;
}
int main()
{
int n,i,f = 1;
cin>>n;
DuLinkList L = PutL();
for(i = 0; i<n-1 ; i++)
{
if(L->prior&&L->prior->data>=0)
L = L->prior ;
else
{
f = 0;
break;
}
}
if(f)
cout<<L->data;
else
cout<<"NULL";
return 0;
}