• 团体程序设计天梯赛-练习集L2-002. 链表去重


    L2-002. 链表去重

    时间限制
    300 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点。即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留。同时,所有被删除的结点必须被保存在另外一个链表中。例如:另L为21→-15→-15→-7→15,则你必须输出去重后的链表21→-15→-7、以及被删除的链表-15→15。

    输入格式:

    输入第一行包含链表第一个结点的地址、以及结点个数N(<= 105 的正整数)。结点地址是一个非负的5位整数,NULL指针用-1表示。

    随后N行,每行按下列格式给出一个结点的信息:

    Address Key Next

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

    输出格式:

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

    输入样例:
    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
    

     思路:数据比较小,可直接用数组模拟,绝对值重复的标记一下就好了

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define maxn 100000
     4 struct Node
     5 {
     6     int key;
     7     int next;
     8 } aa[maxn];
     9 int main()
    10 {
    11     int fadd,n;
    12     cin>>fadd>>n;
    13     int vis[maxn]= {0},ans[maxn],res[maxn];
    14     int t1=0,t2=0;
    15     int add;
    16     for(int i=0; i<n; i++)
    17     {
    18         cin>>add;
    19         cin>>aa[add].key>>aa[add].next;
    20     }
    21     for(int i=fadd; i!=-1; i=aa[i].next)
    22     {
    23         int num=abs(aa[i].key);
    24         if(!vis[num])
    25             vis[num]=1,ans[t1++]=i;
    26         else
    27             res[t2++]=i;
    28     }
    29     printf("%05d %d ",ans[0],aa[ans[0]].key);
    30     for(int i=1; i<t1; i++)
    31     {
    32         printf("%05d
    ",ans[i]);
    33         printf("%05d %d ",ans[i],aa[ans[i]].key);
    34     }
    35     printf("-1
    ");
    36     if(t2)
    37     {
    38         printf("%05d %d ",res[0],aa[res[0]].key);
    39         for(int i=1; i<t2; i++)
    40         {
    41             printf("%05d
    ",res[i]);
    42             printf("%05d %d ",res[i],aa[res[i]].key);
    43         }
    44         printf("-1
    ");
    45     }
    46     return 0;
    47 }
    我会一直在
  • 相关阅读:
    【JAVA基础】正则表达式
    【JAVA基础】常用类的概述和使用
    【JAVA基础】反射机制
    献芹奏曝-Python面试题
    饮冰三年-人工智能-Python-65-Apollo之07 Docker环境部署
    饮冰三年-人工智能-Python-64-Apollo之06测试环境部署
    饮冰三年-人工智能-Docker-63-Docker部署文件帮助系统Mezzanine
    饮冰三年-人工智能-Python-62-ZooKeeper之04实战
    饮冰三年-人工智能-Python-61-ZooKeeper之03原理
    饮冰三年-人工智能-Python-60-ZooKeeper之02安装
  • 原文地址:https://www.cnblogs.com/zhien-aa/p/5650491.html
Copyright © 2020-2023  润新知