PTA数据结构与算法题目集(中文) 7-19

Posted 57one

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA数据结构与算法题目集(中文) 7-19相关的知识,希望对你有一定的参考价值。

PTA数据结构与算法题目集(中文)  7-19

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

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

7
题目分析:看到高效就想用数组来 因为数组按秩查找是相当快的 后面搜了一下别人的做法 更好
技术图片
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<malloc.h>
 4 
 5 int Size;
 6 int main()
 7 
 8     int k;
 9     int*Array = (int*)malloc(sizeof(int) * 1000000);
10     scanf("%d", &k);
11     while (1)
12     
13         int num;
14         scanf("%d", &num);
15         if (num == -1)
16             break;
17         Array[Size++] = num;
18     
19     k = Size - k;
20     if (k <0||k>=Size)
21         printf("NULL");
22     else
23         printf("%d", Array[k]);
24     free(Array);
25     return 0;
26 
View Code

 

别人的做法

技术图片
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<malloc.h>
 4 
 5 
 6 int main()
 7 
 8     int k=0;
 9     int Size=0;
10     scanf("%d", &k);
11     if (k <=0)
12     
13         printf("NULL");
14         return 0;
15     
16     int*Array = (int*)malloc(sizeof(int) * k); //只需存k个数
17     int Flag = 0;
18     while (1)
19     
20         int num;
21         scanf("%d", &num);
22         if (num == -1)   //当输入为-1时退出
23             break;
24         Array[Size++] = num;
25         if (!Flag && Size >= k)
26             Flag = 1;
27         Size%=k;
28     
29     if (!Flag)
30         printf("NULL");
31     else
32         printf("%d", Array[Size]);
33     free(Array);
34     return 0;
35 
View Code

 

以上是关于PTA数据结构与算法题目集(中文) 7-19的主要内容,如果未能解决你的问题,请参考以下文章

PTA数据结构与算法题目集(中文) 7-32

PTA数据结构与算法题目集(中文) 7-18

PTA-数据结构与算法基础题目集(中文)

PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)

PTA 数据结构与算法题目集(中文) 7-3 树的同构 (树哈希)

PTA 数据结构与算法题目集 6-1