L2-002 链表去重 (25 分)(结构体模拟)

简介: 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的整数,下一个结点是下个结点的地址。


输出格式:

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


输入样例:

1. 00100 5
2. 99999 -7 87654
3. 23854 -15 00000
4. 87654 15 -1
5. 00000 -15 99999
6. 00100 21 23854

结尾无空行


输出样例:

1. 00100 21 23854
2. 23854 -15 99999
3. 99999 -7 -1
4. 00000 -15 87654
5. 87654 15 -1

结尾无空行


#include<iostream>
#include<cmath>
using namespace std;
const int N=1e5+10;
int a[N],b[N],c[N],f1,f2;
struct node{
    int next,data;
}s[N];
int main()
{
    int m,n;
    cin>>m>>n;
    for(int i=0;i<n;i++) 
    {
        int x;
        cin>>x>>s[x].data>>s[x].next;
    }
    while(m!=-1)
    {
        int m1=abs(s[m].data);//键值无论正负都不能有重复的
        if(!c[m1])
        {
            a[f1++]=m;
            c[m1]=1;//标记
        }
        else b[f2++]=m;
        m=s[m].next;
    }
    for(int i=0;i<f1-1;i++) printf("%05d %d %05d\n",a[i],s[a[i]].data,a[i+1]);
    if(f1) printf("%05d %d -1\n",a[f1-1],s[a[f1-1]].data);
    for(int i=0;i<f2-1;i++) printf("%05d %d %05d\n",b[i],s[b[i]].data,b[i+1]);
    if(f2) printf("%05d %d -1\n",b[f2-1],s[b[f2-1]].data);//避免无重复的情况
    return 0;
}
目录
相关文章
|
8月前
|
C++
【编码狂想】指针航行,链表魔法,解锁结构体和类的编程幻境
【编码狂想】指针航行,链表魔法,解锁结构体和类的编程幻境
88 1
|
3月前
|
C语言
C语言结构体链式结构之有头单链表
文章提供了一个C语言实现的有头单链表的完整代码,包括创建链表、插入、删除和打印等基本操作。
47 1
|
4月前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
实验:数据结构(结构体在单链表中的增删改查)
实验:数据结构(结构体在单链表中的增删改查)
|
测试技术
L2-022 重排链表 (25 分)(map+结构体模拟)
L2-022 重排链表 (25 分)(map+结构体模拟)
80 0
L2-022 重排链表 (25 分)(map+结构体模拟)
|
算法 Java
【Java算法】链表合并去重算法
【Java算法】链表合并去重算法
115 0
指针_链表_结构体_类 2021-02-17
指针_链表_结构体_类 2021-02-17
|
C语言 C++
C/C++每日一练(20230514) 全排列、分数转小数、排序链表去重II
C/C++每日一练(20230514) 全排列、分数转小数、排序链表去重II
102 0
【C语言】指针,结构体,链表
【C语言】指针,结构体,链表
|
存储 程序员 C语言
深究C语言4.链表和结构体
链表和结构体算是比较难的东西了,而且,这些还是为了后面学数据结构打基础,可谓是承上启下的作用,一定要把它学好。
199 0
深究C语言4.链表和结构体

热门文章

最新文章