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

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

7

法一:用数组:

#include<stdio.h>
#define N 1000005
int main()
{int a[N],size=0,temp;int k;scanf("%d",&k);while(1){scanf("%d",&temp);if(temp<0){break;}a[size++]=temp;}if(k<=size){printf("%d",a[size-k]);}else{printf("NULL");}
}

注意N的取值 得取到1000005 如果整1000000会有一个错误

优点简洁,易懂,较容易想出 ,能快速编出

缺点太暴力,无论如何总要申请那么大的连续空间,并且还要记得申请一百万零5的空间,申请100万都不行

法二:用链表:

#include<stdio.h>
#include<stdlib.h>
typedef struct Node *LNode;
struct Node
{int data;LNode Next;
};
int main()
{int cnt=0,n,d;LNode head=(LNode)malloc(sizeof(struct Node));LNode p,q,t;if(!head) return 1;head->Next=NULL;scanf("%d",&n);p=q=head;while(scanf("%d",&d)!=EOF&&d>=0){p=(LNode)malloc(sizeof(struct Node));if(!p) return 1;p->data=d;p->Next=NULL;q->Next=p;q=p;cnt++;if(cnt>=n){t=head;head=head->Next;free(t);}}if(cnt>=n) printf("%d",head->data);else printf("NULL");
}

优点该方法所占空间少,而且占的空间是不连续的,没给系统造成压力,很巧妙。

缺点这个算法较不容易想出,较复杂

该题注意一个问题:题目所说的输入格式与范围实际拼题给的格式和范围不符

输入格式:

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

题目所说之后是若干正整数,0不是正整数,但给的样例里面有0 所以判断条件一定要写d>=0 而不是d>0 若是后者 将会漏掉一个0值

拼题---求链式线性表的倒数第K项(两种算法的比较)相关推荐

  1. Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)

    3-05. 求链式线性表的倒数第K项(15) 时间限制 250 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定一系列正整数,请设计一个尽可能高效的算法, ...

  2. 求链式线性表的倒数第K项 (20 分)

    7-173 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整 ...

  3. PTA5-19 求链式线性表的倒数第K项

    5-19 求链式线性表的倒数第K项   (20分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数 ...

  4. 1-6 求链式线性表的倒数第K项

    1-6 求链式线性表的倒数第K项 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数 ...

  5. 求链式线性表的倒数第K项(两种方法,第二种较好)

    求链式线性表的倒数第K项 题目 答案 第一种解法 第二种解法(较好) 注意 题目 答案 第一种解法 这种方法是正常输入,然后将链表逆置,虽然pta是可以通过的(写数组应该都能通过),但明显没有下一种好 ...

  6. 7-4 求链式线性表的倒数第K项(最佳解法)(List容器)

    先看问题描述: 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处 ...

  7. 7-19 求链式线性表的倒数第K项 (20 分)(思路分析+极简代码+超容易理解)

    一:题目描述: 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要 ...

  8. 【PTA】7-1 求链式线性表的倒数第K项

    题样: // import java.util.ArrayList; // import java.util.Comparator; // import java.util.Scanner; // p ...

  9. 求链式线性表的倒数第K项(堆栈解法)

    题目:给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输 ...

最新文章

  1. Services(服务)
  2. 为什么一般要定义析构函数为虚析构函数
  3. phoenix+hbase+Spark整合,Spark处理数据操作phoenix入hbase,Spring Cloud整合phoenix
  4. JDK源码(7)-Boolean
  5. 谷歌浏览器 flash_Chrome 76测试版默认禁用Flash 用户可避开更多付费页面
  6. 稳扎稳打Silverlight(5) - 2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox
  7. 七牛云成功通过 CMMI3 认证
  8. 华硕路由器(RT-AC86U)架设简易git服务器
  9. android照片备份软件下载,照片备份云相册app-照片备份云相册安卓版下载v1.5-乐游网安卓下载...
  10. 深入了解物联网,这几个物联网技术了解吗?
  11. Gradle sync failed: No variants found for ':app'. Check build files to ensure at least one varian...
  12. 谷歌浏览器将ssd盘上的缓存目录迁移至机械硬盘
  13. linux的自动挂载
  14. 北京h3c服务器维修站,h3c服务器管理地址
  15. GWAS理论 1-4 关联分析模型和常用软件介绍
  16. 使用DoraOS瘦客户机系统,改造华为版的升腾C92,打造超值的瘦客户机系统
  17. 0基础如何复习计算机408
  18. 独家揭秘语音视频聊天室开发顶尖制作教程
  19. IE恶意修改之终极解决方案
  20. 运维人该醒醒了,要变天了

热门文章

  1. javascript 的七七八八
  2. 【转】阿里云Linux系统被攻击的处理过程
  3. 5个自学网络安全的网站,全是技术干货!
  4. android 8.1 9.0 10.0 app应用卸载黑名单
  5. 常见的几个非关系型数据库(NoSQL)、非关系型和关系型的区别
  6. 从前有座灵剑山--与邪教辩论(1)
  7. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
  8. 【python】pymysql
  9. 宗镜录略讲——南怀瑾老师——系列4
  10. Walk Through the Fire,Is there a way out