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

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

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

1
7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<stdio.h>
#include<stdlib.h>

typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

int main()
{
int temp;
int k,cnt=0;
LinkList L;
L = (LinkList)malloc( sizeof ( struct LNode));
LNode *s=L,*r=L,*p;

scanf("%d",&k);
int f=k; //保护k的值
while(1){
scanf("%d",&temp);
if( temp<0 ){
break;
}
else{
p=(LNode *)malloc(sizeof(LNode));
p->data = temp;
r->next = p;
r = p;
k--;
cnt++;
if( k<1){
s= s->next;
}
}
}
if( f>cnt){
printf("NULL");
}
else printf("%d",s->data);

return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×