L2-002 链表去重 (25 分) 船新方法

			L2-002 链表去重 (25 分)

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

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

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

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

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

输入样例:

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

你之前从没见过的全新版本;
大家都很老实,题目让你链表去重你就真的认认真真的链表去重,太老实了!!!!!
其实只需要存一个东西就行了,就是——————地址。
因为地址的值你是知道的,上一个的下一个就是你这个地址,所以根本不用七八十行。
上代码:

#include<iostream>
#include<cmath>
#include<vector>
#include<iomanip>
using namespace std;
bool pan[100005]={false};
struct node{int data;int nd;
}ch[100005];
int main()
{int head,n;cin>>head>>n;for (int i=0;i<n;i++){int adress,data,next;cin>>adress;cin>>ch[adress].data>>ch[adress].nd;}vector<int>cun1,cun2;while (head!=-1){int data=ch[head].data;data=abs(data);if (pan[data]==false){cun1.push_back(head);//存储一队的地址pan[data]=true;}else{cun2.push_back(head);//存储二队的地址}head=ch[head].nd;}//我知道printf输出比较简单,但帅就完事了,迭代器加c++输出方式,*格就上来了!for (vector<int>::iterator it=cun1.begin();it!=cun1.end();it++){if (it==cun1.begin()){cout<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}else {cout<<setw(5)<<setfill('0')<<*it<<endl<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}}cout<<"-1"<<endl;for (vector<int>::iterator it=cun2.begin();it!=cun2.end();it++){if (it==cun2.begin()){cout<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}else {cout<<setw(5)<<setfill('0')<<*it<<endl<<setw(5)<<setfill('0')<<*it<<" "<<ch[*it].data<<" ";}}if (cun2.size()) cout<<"-1"<<endl;//特别注意,第三个测试点是没有重的return 0;
}

一个结构体一存,两个vector存储结果,输出的时候注意就行了。
52行,美滋滋。

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

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

相关文章

oracle中间键配置,Oracle Exalogic中间件云服务器简介及产品配置特点(2)

Oracle Exalogic中间件云服务器 —— 软硬件结合的优化平台目前&#xff0c;企业所面临的应用挑战大多集中在异构环境、复杂的多层应用以及现有环境的低利用率等。于是&#xff0c;企业开始根据实际业务需求和投资情况将系统进行整合设计&#xff0c;旨在精简架构以提高系统的灵…

System

类&#xff1a; System.TimeDate 关于时间的类转载于:https://www.cnblogs.com/Sea1ee/p/7285238.html

L2-003 月饼 (25 分)

L2-003 月饼 (25 分)月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的…

Oracle删除pk+cascade,Oracle删除表

在本教程中&#xff0c;将学习如何使用Oracle DROP TABLE语句删除现有的表。Oracle DROP TABLE语句简介要将表移动到回收站或将其从数据库中完全删除&#xff0c;请使用DROP TABLE语句&#xff1a;DROP TABLE schema_name.table_name [CASCADE CONSTRAINTS | PURGE];在这个语句…

L2-005 集合相似度 (25 分)

L2-005 集合相似度 (25 分) 给定两个整数集合&#xff0c;它们的相似度定义为&#xff1a;N ​c ​​ /N ​t ​​ 100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数&#xff0c;N ​t ​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似…

oracle有sysdata,Oracle基础

1、默认事例&#xff1a;用户名&#xff1a;scott密码&#xff1a;tiger 主机字符串&#xff1a;本机可以为空2、启动方法&#xff1a;运行&#xff1a;sqlplusscott/tigerlhd3、SQLPLUS基本命令&#xff1a;Desc&#xff1a;显示表、视图结构 desc 表名&#xff0c;视图List&…

selenium+java初级学习笔记之单个元素定位

元素定位可以大概分为八重一般情况下常用的就是by.id、by.name、by.classname&#xff0c;如果需要定位的元素中没有这几个可以选择其他方式的定位&#xff1a;By.id(id) //&#xff08;有时元素中id是会变化的&#xff0c;可以刷新页面&#xff0c;如果发现每次的id都不一样则…

L2-004 这是二叉搜索树吗? (25 分)

L2-004 这是二叉搜索树吗&#xff1f; (25 分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树&#xff1a;对于任一结点&#xff0c; 其左子树中所有结点的键值小于该结点的键值&#xff1b; 其右子树中所有结点的键值大于等于该结点的键值&#xff1b; 其左右子树都是…

Linux高频命令汇总,Linux高频命令

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;findfind path [options] params作用&#xff1a;在指定目录下查找文件1234find / -name "target.java" #在根目录下查找target.java文件find -name &qu…

深入理解javascript函数参数

arguments javascript对参数要求很随意&#xff0c;她才不管你传进来的参数是什么数据类型&#xff0c;甚至可以不传参数。实际上&#xff0c;javascript函数调用甚至不检查传入形参的个数。 1 function add(x){ 2 return x 1; 3 } 4 console.log(add(1))…

linux系统时间函数,Linux时间时区详解与常用时间函数

时间与时区整个地球分为二十四时区&#xff0c;每个时区都有自己的本地时间。UTC时间 与 GMT时间我们可以认为格林威治时间就是时间协调时间(GMT UTC)&#xff0c;格林威治时间和UTC时间都用秒数来计算的。UTC时间与本地时间UTC 时区差 本地时间时区差东为正&#xff0c;西为…

7-5 汉诺塔的非递归实现 (25 分)

7-5 汉诺塔的非递归实现 (25 分) 借助堆栈以非递归&#xff08;循环&#xff09;方式求解汉诺塔的问题&#xff08;n, a, b, c&#xff09;&#xff0c;即将N个盘子从起始柱&#xff08;标记为“a”&#xff09;通过借助柱&#xff08;标记为“b”&#xff09;移动到目标柱&…

js 异步问题

如果发现前端的异步请求&#xff0c;network有发送成功而且有返回值&#xff0c;但是没有进前端的callback成功回掉函数内&#xff0c;这时候就需要检查是不是配置文件做了语法限制&#xff0c;只能返回某些数据格式&#xff0c;不能返回某些数据格式。 一般限制最多的就是后端…

海康、大华IPC的rtsp格式

海康&#xff1a;  rtsp://[username]:[password][ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明&#xff1a;username: 用户名。例如admin。password: 密码。例如12345。ip: 为设备IP。例如 192.0.0.64。port: 端口号默认为554&#xff0c;若为默认可不填写。codec…

linux awr 日志,Linux平台生成awr报告

1&#xff0e;使用Oracle用户登录应用服务器所使用的数据库所在的服务器# su –oracle2&#xff0e;输入env命令&#xff0c;查询出ORACLE_HOME 目录3&#xff0e;然后进入$ORACLE_HOME/rdbms/admin目录&#xff0c;查询awr语句(此步骤可以忽略)此处可以直接省略2&#xff0c;3…

利用一维数组输出杨辉三角

直接上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt();int table [] new int [n1];table[0] 1;for (int i1;i<n;i) {for (int j0;j<…

缓存(Cache)管理 ---- 系列文章

利用Cache防止同一帐号重复登录.net中Cache管理操作系统缓存全解析 (下)系统缓存全解析 (中)系统缓存全解析 (上)出处&#xff1a;http://www.cnblogs.com/luckdv/tag/%E7%BC%93%E5%AD%98/转载于:https://www.cnblogs.com/mq0036/p/7291955.html

找到一个二位数组的鞍点

上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int mat[][] new int[3][3];for (int i0;i<3;i) {for (int j0;j<3;j) {mat[i][j] in.nextInt();}}bool…

linux 文件按时间 函数,[Linux文件属性]使用utime函数操作文件的时间参数

//这是一个使用utime函数对文件的时间参数进行修改的实例//文件首先使用stat函数获得文件当前的时间参数&#xff0c;然后使用//Open函数对文件进行修改&#xff0c;再用utime函数对文件的时间信息//进行修改.文件名由argv参数给出#include #include #include int main(int arg…

HDU 1159 Common Subsequence 动态规划

2017-08-06 15:41:04 writer&#xff1a;pprp 刚开始学dp&#xff0c;集训的讲的很难&#xff0c;但是还是得自己看&#xff0c;从简单到难&#xff0c;慢慢来&#xff08;如果哪里有错误欢迎各位大佬指正&#xff09; 题意如下&#xff1a; 给两个字符串&#xff0c;找到其中大…