团体程序设计天梯赛 L2-002 链表去重

L2-002 链表去重

分数 25

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。

输入格式:

输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −1 来表示。

随后 N 行,每行按以下格式描述一个结点:

地址 键值 下一个结点

其中地址是该结点的地址,键值是绝对值不超过104的整数,下一个结点是下个结点的地址。

输出格式:

首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。

输入样例:

00100 5
99999 -7 87654
23854 -15 00000
87654 15 -1
00000 -15 99999
00100 21 23854

输出样例:

00100 21 23854
23854 -15 99999
99999 -7 -1
00000 -15 87654
87654 15 -1

题解

根据题意模拟,用STL的容器map来储存映射的关系,分别储存当前地址的值和当前地址的下一个地址。用queue队列来存放原本的和重复的,根据地址一个链接一个来循环遍历,判断是否重复,如果重复就加入wans队列,否则加入ans队列。最后特判输出。

#include<bits/stdc++.h>
using namespace std;
int n;
map<int,int> temp;
map<string,int> lb;
map<string,string> nx;
queue<string> ans;
queue<string> wans;
int main()
{string first;cin>>first;cin>>n;for(int i=1;i<=n;i++){string x,y;int v;cin>>x;cin>>v;cin>>y;lb[x]=v;nx[x]=y;}//遍历链表for(string i=first;i!="-1";i=nx[i]){if(temp[abs(lb[i])]!=0){wans.push(i);}else{temp[abs(lb[i])]++;ans.push(i);}}int ri=1,endr=ans.size();int wi=1,endw=wans.size();//输出 由于格式的问题 加了些特判 特别要判断整个长度是否只有1while(!ans.empty()){if(endr==1){cout<<ans.front()<<" "<<lb[ans.front()]<<" "<<"-1"<<endl;;}else if(ri==1&&ri!=endr){cout<<ans.front()<<" "<<lb[ans.front()]<<" ";}else if(ri!=1&&ri!=endr){cout<<ans.front()<<endl;cout<<ans.front()<<" "<<lb[ans.front()]<<" ";}else if(ri==endr){cout<<ans.front()<<endl;cout<<ans.front()<<" "<<lb[ans.front()]<<" "<<"-1"<<endl;}ri++;ans.pop();}while(!wans.empty()){if(endw==1){cout<<wans.front()<<" "<<lb[wans.front()]<<" "<<"-1"<<endl;}else if(wi==1&&wi!=endw){cout<<wans.front()<<" "<<lb[wans.front()]<<" ";}else if(wi!=1&&wi!=endw){cout<<wans.front()<<endl;cout<<wans.front()<<" "<<lb[wans.front()]<<" ";}else if(wi==endw){cout<<wans.front()<<endl;cout<<wans.front()<<" "<<lb[wans.front()]<<" "<<"-1"<<endl;}wi++;wans.pop();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#学习:初识各类应用程序

编写我们第一个程序——Hello,World! 1.编程不是“学”出来的&#xff0c;而是“练”出来的 2.在反复应用中积累&#xff0c;忽然有一天就会顿悟 3.学习原则&#xff1a; 3.1从感官到原理 3.2从使用别人的到创建自己的 3.3必需亲自动手 3.4必需学以致用&#xff0c;紧跟实际…

计算机网络原理--传输层

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 TCP/IP五层&#xff08;或四层&#xff09;模型 传输层 TCP和UDP的区别 UDP协议 校验和 如何…

c#压缩文件函数

/// <summary> /// 压缩文件 /// </summary> /// <param name"sourceFile">要压缩的文件名</param> /// <param name"destFile">压缩后的文件名</param> …

ORACLE EBS 润年日期漏入数据库处理

做之前记得做好备份表数据&#xff01; --1、 出错数据日期为&#xff1a;schedule_close_date 2024/2/28 Select * From inv.org_acct_periods Where period_set_name NIPRC_CALENDAR --根据自己的实际命名 And period_name FEB-24; --修正为&#xff1a;schedule_cl…

【Web】get请求和post请求的区别

get请求和post请求的区别 get请求请求参数在请求行中&#xff08;链接后面直接显式说明&#xff09;post请求请求参数在请求体中&#xff0c;通常以JSON形式传送 get请求可以直接看见明文post请求一般有加密 get请求的大小有限制post请求无限制 企业开发中&#xff0c;get经常被…

30天自制操作系统(第20天)

20.1 显示单个字符的API&#xff08;1&#xff09; 需要实现&#xff1a;当在命令窗口输入 ‘hlt’ 时&#xff0c;打印一个字符。思考一下&#xff0c;需要在执行hlt.nas文件时打印的字符&#xff0c;所以需要在文件中规定要打印的字符。打印字符需要调用cons_putchar函数&…

postcss-px-to-viewport include属性

包含include配置的(github)&#xff1a;npm i https://github.com/evrone/postcss-px-to-viewport -S 包含include配置的(npm)&#xff1a;npm i postcss-px-to-viewport-8-with-include -S 不包含包include配置的(npm)&#xff1a;npm i postcss-px-to-viewport 看了一下这篇文…

Linux 基础之 vmstat 命令详解

文章目录 一、前言二、使用说明2.1 vmstat [delay/count/d/D/t/w]2.2.vm模式的字段 一、前言 vmstat(VirtualMeomoryStatistics&#xff0c;虚拟内存统计)是一个不错的 Linux/Unix 监控工具&#xff0c;在性能测试中除了top外也是比较常用的工具之一&#xff0c;它可以监控操作…

同局域网共享虚拟机(VMware)

一、前言 首先我们先来了解下 VMware 的三种网络模式桥接模式、NAT模式、仅主机模式&#xff0c;网络类型介绍详情可以参考下我之前的文档 Linux系统虚拟机安装&#xff08;上&#xff09;第三章 - 第9步指定网络类型。了解三种网络模式的原理之后&#xff0c;再来剖析下需求&…

Python爬虫——Urllib库-上

这几天都在为了蓝桥杯做准备&#xff0c;一直在刷算法题&#xff0c;确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来&#xff0c;那么Python的爬虫就这样开始学习了。 注&#xff1a;文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

自定义View中的ListView和ScrollView嵌套的问题

当我们在使用到ScrollView和ListView的时候可能会出现显示不全的问题。那我们可以进行以下分析 ScrollView在测量子布局的时候会用UNSPECIFIED。通过源码观察&#xff0c; 在ScrollView的onMeasure方法中 Overrideprotected void onMeasure(int widthMeasureSpec, int heightMe…

MySQL数据库安装与配置全攻略

MySQL安装配置教程 MySQL是一种流行的开源数据库管理系统&#xff0c;广泛用于网站和服务器应用程序中存储数据。本教程将引导你完成在Windows系统上安装和配置MySQL数据库的步骤。 一、下载MySQL安装包 访问MySQL官方网站&#xff1a;MySQL Downloads选择"MySQL Commu…

MySQL进阶:大厂高频面试——各类SQL语句性能调优经验

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;强推&#xff0c;冲大厂必精通&#xff01;MySQL索引底层&#xff08;BTree&#xff09;、性能分析、使用…

HTTP笔记(五)

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 目录 一&#xff1a;HTTP报文首部 &#xff08;1&#xff09;HTTP请求报文 &#xff08;2&#xff09…

WPF MVVM中List<>和ObservableCollection<>的区别与对比分析

在WPF MVVM&#xff08;模型-视图-视图模型&#xff09;架构中&#xff0c;数据绑定是实现UI与后端逻辑分离的关键特性。为了使UI能够响应后端数据的变化&#xff0c;通常需要用到特定的集合类型。在WPF中&#xff0c;最常见的两种集合类型是List< T>和ObservableCollect…

Kaggle 竞赛入门

打比赛不用写算法源码&#xff0c;应用的时候不用自己写。学习的时候可以自己写。 Kaggle 竞赛入门 认识 Kaggle 平台Kaggle竞赛知识前提结构化数据前提图像数据文本数据 Kaggle竞赛套路一个赛题的完整流程 认识 Kaggle 平台 Kaggle 官网 主页&#xff0c;比赛&#xff08;数据…

复现nerfstudio并训练自己制作的数据集

网站&#xff1a;安装 - nerfstudio GitHub - nerfstudio-project/nerfstudio&#xff1a;NeRF 的协作友好工作室 安装之前要确保电脑上已经有CUDA11.8或以上版本&#xff08;更高版本的可以安装11.8的toolkit&#xff09; 创建环境 conda create --name nerfstudio -y pyt…

Vector容器介绍

一、引言 在C标准库中&#xff0c;vector是一个非常重要的容器&#xff0c;它提供了动态数组的功能。与静态数组不同&#xff0c;vector可以在运行时动态地增加或减少其大小。这使得vector在处理不确定数量的数据时变得非常有用。vector容器保证了元素的连续存储&#xff0c;因…

浅谈 Linux 网络编程 - Server 端模型、sockaddr、sockaddr_in 结构体

文章目录 前言前置知识Server 端核心模型 【重点】相关函数 【重点】socket 函数bind 函数listen 函数accept 函数close 函数 sockaddr 数据结构 【重点】 前言 本文主要是对 Linux 网络编程中&#xff0c;Server 端的模型、相关函数 以及 sockaddr、sockaddr_in 结构体做介绍…

图片压缩上传实例

前台图片上传压缩是一种常见的需求&#xff0c;可以通过前端技术实现图片的压缩&#xff0c;减小图片的大小&#xff0c;提高页面加载速度。以下是一个前台图片上传压缩的实例&#xff1a; 首先&#xff0c;在前端页面中添加一个文件上传的input标签&#xff1a; <input ty…