zoukankan      html  css  js  c++  java
  • L2-002. 链表去重

    L2-002. 链表去重

    给定一个带整数键值的单链表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
    

    题解:

      水题。

      用类型静态邻接表的思想,模拟链表操作即可……

    代码 C++:

     1 #include <cstdio>
     2 #include <cstdlib>
     3 #define MX 100005
     4 int data[MX], nxt[MX], isUS[MX];
     5 void opt(int lst, int oDate, int oNxt){
     6     printf("%0*d %d ", 5, lst, oDate);
     7     if (~oNxt) printf("%0*d
    ", 5, oNxt);
     8     else puts("-1");
     9 }
    10 int main() {
    11     int st, n, i, j, now, lst, rData, rNxt;
    12     scanf("%d%d", &st, &n);
    13     for (i = 0; i < n; ++i){
    14         scanf("%d%d%d", &now, &rData, &rNxt);
    15         data[now] = rData; nxt[now] = rNxt;
    16     }
    17 
    18     nxt[lst = MX - 1] = -1; ++isUS[std::abs(data[st])];
    19     for (i = st; ~i; i = j){
    20         j = nxt[i];
    21         if (j == -1 || !isUS[std::abs(data[j])]){
    22             ++isUS[std::abs(data[j])];
    23             opt(i, data[i], nxt[i]);
    24         }
    25         else{
    26             nxt[i] = nxt[j];
    27             nxt[lst] = j; nxt[lst = j] = -1;
    28             j = i;
    29         }
    30     }
    31     for (i = nxt[MX - 1]; ~i; i = nxt[i]) opt(i, data[i], nxt[i]);
    32     return 0;
    33 }
  • 相关阅读:
    排序比较与总结
    Oracle误删恢复
    DSP TMS320C6000基础学习(4)—— cmd文件分析
    NYOJ 488 素数环
    Oracle常用语句记录
    Cocoa编程开发者手册
    Unity3d物体模型(实现旋转缩放平移自动旋转)
    django 创建一个通用视图
    ContentResolver + SqliteOpenHelper + ContentProvider 理解
    线性回归,logistic回归和一般回归
  • 原文地址:https://www.cnblogs.com/Simon-X/p/6623619.html
Copyright © 2011-2022 走看看