1. 开始测试点4不通过,检查后发现是犯了低级错误,把表示绝对值有无出现的整型数组的大小设置为了4000(题目中说绝对值不会超过10的4次方),所以最小也该是10001。

2. 我认为和其他链表题相比,本题是不需要给结点加特殊属性用来排序的,因为可以直接在过程中记录主链和副链的数目,然后按照顺序存入静态链表(实际上就是数组)。

3. 整体思路是,对于每一个读入的结点,要是绝对值没出现过就放进主链link1,一开始只要读入add和key就好了,next是在全部读入以后用下一个数组元素的add填充,绝对这出现过的就放进副链link2。其实对主链和副链的处理是完全一样的。

AC代码

#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>using namespace std;const int maxn = 100010;struct Node{int add,key,next;
}node[maxn],link1[maxn],link2[maxn];int pi[10001] = {0};//记录某个整数有没有出现过 int main(){int n,begin;scanf("%d %d",&begin,&n);int add;while(n--){scanf("%d",&add);scanf("%d %d",&node[add].key,&node[add].next);node[add].add = add;}int cnt1 = 0,cnt2 = 0;//分别代表链1和链2上结点的数量int L = begin;while(L!=-1){if(!pi[abs(node[L].key)]){pi[abs(node[L].key)] = 1;//表示那个值对应的绝对值出现过了 link1[cnt1].key = node[L].key;link1[cnt1].add = node[L].add;cnt1 ++;L = node[L].next;}else{link2[cnt2].key = node[L].key;link2[cnt2].add = node[L].add;cnt2 ++;L = node[L].next;}} //给主链的节点的next赋值  for(int i=0;i<cnt1-1;i++){link1[i].next = link1[i+1].add;}link1[cnt1-1].next = -1;//给副链的结点的next赋值 for(int i=0;i<cnt2-1;i++){link2[i].next = link2[i+1].add;}link2[cnt2-1].next = -1;for(int i=0;i<cnt1;i++){printf("%05d %d ",link1[i].add,link1[i].key);if(link1[i].next!=-1)printf("%05d\n",link1[i].next);else printf("-1\n");} for(int i=0;i<cnt2;i++){printf("%05d %d ",link2[i].add,link2[i].key);if(link2[i].next!=-1)printf("%05d\n",link2[i].next);else printf("-1\n");}return 0;
}

1097 Deduplication on a Linked List相关推荐

  1. PAT甲级1097 Deduplication on a Linked List:[C++题解]遍历链表、两个vector

    文章目录 题目分析 题目链接 题目分析 题意:删掉链表中数值绝对值相同的结点,将其放入另一个链表中.最后输出去重后的链表和删掉元素构成的链表. 分析:采用数组模拟链表,把链表存下来.然后遍历链表,该元 ...

  2. 1097 Deduplication on a Linked List (25 分)_35行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given a singly linked list L with integer keys, you are supposed ...

  3. PTA甲级 1097 Deduplication on a Linked List (25分)-链表处理

    文章目录 题目原文 Input Specification: Output Specification: Sample Input: Sample Output: 生词如下: 题目大意: 思路如下: ...

  4. 【PAT甲级题解】1097 Deduplication on a Linked List (25分)

    Deduplication意为重复数据消除,Deplicated意为复制,是deduplication的过去式,题干大意为给定一个单链表L要求你对每一个结点的值判断,如果这个值的绝对值是第一次出现,那 ...

  5. 【PAT甲级 链表去重】1097 Deduplication on a Linked List (25 分) C++ 全部AC

    题目 思路: 先把题目中的链表读进内存 创建两个新链表listA, listB 遍历原链表,把重复的放进listB,不重复的放进listA.放的时候,注意处理一下后继next中存的值. 分别打印两个分 ...

  6. PAT1097:Deduplication on a Linked List

    1097. Deduplication on a Linked List (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...

  7. A1097 Deduplication on a Linked List

    静态链表实现 取巧+思路清晰 但是时间复杂度比较高 可以优化insert Given a singly linked list L with integer keys, you are suppose ...

  8. PAT甲级题目翻译+答案 AcWing(链表)

    1032 Sharing (25 分) 题意 : suffix后缀:prefix前缀 每个结点存一个字母,一共存两个单词 分别给两个单词的第一个字母的地址以及总共的结点数 给出所有结点的地址数值和下一 ...

  9. 【最新合集】PAT甲级最优题解(题解+解析+代码)

    以下每道题均是笔者多方对比后, 思考整理得到的最优代码,欢迎交流! 共同成长哇.可以和博主比拼一下谁刷的更快~ 欢迎收藏.欢迎来玩儿 PAT题解目录 题号 标题 题解 分类 使用算法 1001 A+B ...

最新文章

  1. Pycharm 基本快捷键
  2. POSIX消息队列信号通知
  3. axios get 某个参数是数组怎么传_Vue 中 Axios 的封装和 API 接口的管理
  4. spring事物配置,声明式事务管理和基于@Transactional注解的使用
  5. html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx
  6. 六、爬虫中重要的解析库xpath和BeautifulSoup
  7. 【软件构造】(转) 设计模式
  8. C#使用StreamReader类读取文件文件
  9. TCP/IP 和 TCP/IP的 三/四次握手
  10. python好用的模块_python常用的内置模块和常用的第三方模块
  11. C语言内存动态分配与释放
  12. 代码行云流水..这位刚高中毕业的 UP 主,告诉我人的学习能力没有上限
  13. Selenium Grid跨浏览器-兼容性测试
  14. 掘金小册前端性能优化原理与实践读后总结
  15. 计算机网络原理大题汇总
  16. java对象复制_Java对象的复制三种方式
  17. 蚂蚁金服是不是中国最好的 FinTech(金融科技)公司
  18. 关关于android 微信sdk 分享 图片 到 朋友圈 的问题
  19. Conflux 请你“出名”啦!
  20. 用Matlab作出汽车驱动力图

热门文章

  1. Node.js的url模块简介
  2. 酷派、华为不能打印log解决办法
  3. Spring Boot 教程(三): Spring Boot 整合Mybatis
  4. VmWare 与 宿主主机通信 STEP BY STEP (适用于刚開始学习的人)
  5. poj 1185(状压dp)
  6. 集体智慧及其常用算法
  7. JScript Array对象的几个原型方法
  8. 为TextMate扩展全屏功能
  9. MQTT 协议 Client ID 长度不能超过23个字符
  10. Python 中的进程、线程、协程、同步、异步、回调(一)