如何用C++实现L2-002链表去重
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"如何用C++实现L2-002链表去重"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!给
千家信息网最后更新 2026年11月03日如何用C++实现L2-002链表去重
本篇内容介绍了"如何用C++实现L2-002链表去重"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
给定一个带整数键值的链表 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
思路:
很多办法都可以实现,我选择数组模拟动态内存,先建立一个链表再遍历,时间复杂度是O(n),格式控制还是printf好用。
#include#include #include #define NULL -1using namespace std;typedef struct node { int val; unsigned int next;}node;node store[100001];//开辟一片模拟内存int flag[10001];//标记结点int main() { int num, startM;//p标记当前节点 cin >> startM >> num; for (int i = 0; i < num; i++) { int now, val, next; cin >> now >> val >> next; store[now].val = val; store[now].next = next; }//链表构建完成 int p1=startM,startS=NULL; int p2 = 100000,pre; bool k = true; while (p1 != NULL) { if (flag[abs(store[p1].val)] != 0) { store[pre].next = store[p1].next; store[p2].next = p1; store[p1].next = NULL; p2 = p1; if (k) { k = false; startS = p2; } p1 = store[pre].next; } else { flag[abs(store[p1].val)] = 1; pre = p1; p1 = store[p1].next; } }//链表查重完成 p1 = startM; while (p1 != NULL) { if(store[p1].next!=NULL) printf("d %d d\n",p1, store[p1].val, store[p1].next); else printf("d %d %d\n", p1, store[p1].val, store[p1].next); p1 = store[p1].next; } p1 = startS; while (p1 != NULL) { if (store[p1].next != NULL) printf("d %d d\n", p1, store[p1].val, store[p1].next); else printf("d %d %d\n", p1, store[p1].val, store[p1].next); p1 = store[p1].next; } return 0;}
"如何用C++实现L2-002链表去重"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
结点
地址
输出
格式
整数
输入
绝对值
C++
一行
内存
内容
更多
标记
知识
复杂
实用
学有所成
接下来
办法
动态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
互联网新科技
新华互联网科技
互联网是第几次科技革命的成果
中国互联网科技股
科技互联网项目
中国 科技 互联网
智网互联网科技
互联网金融科技创新
智慧科技互联网
互联网科技博主是什么意思
哈尔滨新华互联网科技学院
互联网科技实习生岗位职责
互联网校园科技培训
来此购互联网科技有限公司
中国航天科技大学国际工业互联网
乌苏新华互联网科技做什么的
山东星卡互联网科技有限公司官网
富国互联网金融科技混合基金
2021世界互联网领先科技成果发布
深圳市人人互联网科技有限公司
互联网科技保险
河南真二互联网科技有限公司
深圳齐家互联网科技
赫美联合互联网科技
互联网金融 科技创新
互联网金融和金融科技
中盈科技互联网信息有限公司
富国互联网金融科技混合基金
安徽九吞吴互联网科技有限公司