题目

思路:

  • 先把题目中的链表读进内存
  • 创建两个新链表listA, listB
  • 遍历原链表,把重复的放进listB,不重复的放进listA。放的时候,注意处理一下后继next中存的值。
  • 分别打印两个分离的链表listAlistB,注意补全5位address的前导0


题解 C++

每次提交结果不完全一样,有时候后两个测试点运行超时,有时候全部AC。
实际比赛的时候,也要多试几次(上次就是,提交多次,结果有微小差别)。

#include<iostream>
#include<math.h>
#include<iomanip>
#define SIZE 10000
using namespace std;
class Node {public:int addr = -1;int key;              //0-10000int next = -1;bool isSame = false;   //标记key是否重复
};
int main() {Node list[SIZE];        //0-100000 数组存储链表 下标代表地址int firstNotSame, total;cin >> firstNotSame >> total;//输入链表int addr;for (int i = 0; i < total; i++) {cin >> addr;list[addr].addr = addr;//便于输出cin >> list[addr].key >> list[addr].next;}//遍历链表:拆分Node listA[SIZE];int sizeA = 0;Node listB[SIZE];int sizeB = 0;bool hasKey[10000] = { false };//标记该key是否存在Node cur = list[firstNotSame];while (true) {if (!hasKey[abs(cur.key)]) {//key不存在hasKey[abs(cur.key)] = true;//存入Aif (sizeA != 0) {listA[sizeA - 1].next = cur.addr;}listA[sizeA] = cur;listA[sizeA].next = -1;sizeA++;}else {//存入Bif (sizeB != 0) {listB[sizeB - 1].next = cur.addr;}listB[sizeB] = cur;listB[sizeB].next = -1;sizeB++;}if (cur.next == -1) {break;}else {cur = list[cur.next];}}//输出两个(伪)链表for (int i = 0; i < sizeA; i++) {cout << setw(5) << setfill('0') << listA[i].addr << " ";//处理前导0cout << listA[i].key << " ";if (listA[i].next == -1)cout << "-1\n";                 //处理前导0else cout << setw(5) << setfill('0') << listA[i].next << endl;}for (int i = 0; i < sizeB; i++) {cout << setw(5) << setfill('0') << listB[i].addr << " ";//处理前导0cout << listB[i].key << " ";if (listB[i].next == -1)cout << "-1\n";                   //处理前导0else cout << setw(5) << setfill('0') << listB[i].next << endl;}system("pause");
}

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

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

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

  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甲级 stack queue的使用】1051 Pop Sequence (25 分) C++ 全部AC

    题目 思路 维护三个集合:核心栈.数字队列.目标队列 详细思路见注释 题解 C++ #include<iostream> #include<stack> #include< ...

  5. 【PAT甲级 进位相加】1058 A+B in Hogwarts (20 分) C 全部AC

    题目 进位相加 题解 C #include<stdio.h> int main() {int a1, b1, c1;int a2, b2, c2;int a3, b3, c3;scanf( ...

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

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

  7. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  8. 1097 Deduplication on a Linked List

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

  9. 【PAT甲级】1048 Find Coins (25 分) C++ 全部AC

    题目 给你一个sum,以及拥有的钱 让你找出一个组合,正好用两张钱付清sum,注意如果有多个结果,输出其中最小的 这道题注意稍微优化一下算法,要不然卡在测试点3,4 我是用二重循环过了的,只要注意输入 ...

最新文章

  1. 修改所有列_宝塔面板安装完的一些列操作
  2. sublime开启vim模式
  3. delphi之模糊找图
  4. java ee io_JAVAEE细细看 进阶 14 - IO总结-Go语言中文社区
  5. Spring + Dubbo + zookeeper (linux) 框架搭建
  6. 1.11 双向神经网络
  7. Android 内存泄漏问题多多,怎么优化?
  8. 今 天看到我十年前的一篇技术文章,想到不知不觉学编程十多年了,,
  9. 《Managed DirectX +C# 开发(入门篇)》系列文章
  10. zedboard板子上呼吸灯的实现(第一版)仿真代码的实现
  11. 灯效控制器和rgb控制器_还有什么不能RGB?TT发布Level 20 RGB BattleStation电竞桌
  12. 智能优化算法:非洲秃鹫优化算法-附代码
  13. nginx面试题及详解
  14. AD制作gerber文件详细步骤
  15. 电子书:《网页木马攻防实战》
  16. 【渝粤教育】电大中专液压与气动技术_1作业 题库
  17. 滴滴APM工具Dokit
  18. Vue页面生成分享海报最详说明(含二维码+多种水印方式+常见的坑处理)
  19. 零预算?如何免费开发自己的管理系统?
  20. 实用英语:女生拒绝男生搭讪的经典英语句

热门文章

  1. linux cacti安装教程,Linux下cacti的安装与配置
  2. 安卓入门系列-09一个实战小项目(备忘录Memo)
  3. python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC
  4. Burpsuite中protobuf数据流的解析 - Vincent
  5. 用Python生成随机的中文验证码图片
  6. 关于SOCKET中send和recv函数工作原理总结
  7. MYSQL视图用户管理
  8. 机器学习实战教程(四):朴素贝叶斯基础篇之言论过滤器
  9. redis接口的二次封装
  10. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.