题意:

给出一个链表,删除绝对值相同的结点,对于每个绝对值为K的结点,只保留第一次出现的那个。把被移除的结点组成一个新链表,输出删除去重后的链表和新链表。

思路:考察链表的“删除”操作,不难。

代码:

#include <cstdio>
#include <cstdlib>//abs()

;
struct Node{
    int data;
    int curr,next;
}LinkList[N],ansList[N];

void printLinkList(int p)
{
    ){
        printf("%05d %d ",ansList[p].curr,ansList[p].data);
        ) printf("%05d\n",ansList[p].next);
        else printf("-1\n");
        p=ansList[p].next;
    }
}

int main()
{
    //freopen("pat.txt","r",stdin);
    int head,n;
    scanf("%d%d",&head,&n);
    int curr,data,next;
    ;i<n;i++){
        scanf("%d%d%d",&curr,&data,&next);
        LinkList[curr].curr=curr;
        LinkList[curr].data=data;
        LinkList[curr].next=next;
    }
    ,rlast=-;//removed list
    int last=head;//remain list
    int p=head;
    ]={};//标记结点是否已经出现过
    ){
        int key=abs(LinkList[p].data);
        ){//如果该值之前已经出现过了
            ){
                rhead=rlast=LinkList[p].curr;
                ansList[rlast].curr=LinkList[p].curr;
                ansList[rlast].data=LinkList[p].data;
                ansList[rlast].next=-;
            }else{
                ansList[rlast].next=LinkList[p].curr;
                rlast=LinkList[p].curr;
                ansList[rlast].curr=LinkList[p].curr;
                ansList[rlast].data=LinkList[p].data;
                ansList[rlast].next=-;
            }
        }else{//该结点首次出现
            mp[key]=;
            if(p==head) {
                ansList[last].curr=LinkList[p].curr;
                ansList[last].data=LinkList[p].data;
                ansList[last].next=-;
            }else{
                ansList[last].next=LinkList[p].curr;
                last=LinkList[p].curr;
                ansList[last].curr=LinkList[p].curr;
                ansList[last].data=LinkList[p].data;
                ansList[last].next=-;
            }
        }
        //
        p=LinkList[p].next;
    }
    printLinkList(head);
    printLinkList(rhead);
    ;
}

1097 Deduplication on a Linked List的更多相关文章

  1. PAT 1097 Deduplication on a Linked List[比较]

    1097 Deduplication on a Linked List(25 分) Given a singly linked list L with integer keys, you are su ...

  2. PAT甲级——1097 Deduplication on a Linked List (链表)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/91157982 1097 Deduplication on a L ...

  3. PAT (Advanced Level) Practise - 1097. Deduplication on a Linked List (25)

    http://www.patest.cn/contests/pat-a-practise/1097 Given a singly linked list L with integer keys, yo ...

  4. 1097. Deduplication on a Linked List (25)

    Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...

  5. PAT 1097. Deduplication on a Linked List (链表)

    Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...

  6. PAT Advanced 1097 Deduplication on a Linked List (25) [链表]

    题目 Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplica ...

  7. PAT (Advanced Level) 1097. Deduplication on a Linked List (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  8. PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作

    给定一个链表,你需要删除那些绝对值相同的节点,对于每个绝对值K,仅保留第一个出现的节点.删除的节点会保留在另一条链表上.简单来说就是去重,去掉绝对值相同的那些.先输出删除后的链表,再输出删除了的链表. ...

  9. 【PAT甲级】1097 Deduplication on a Linked List (25 分)

    题意: 输入一个地址和一个正整数N(<=100000),接着输入N行每行包括一个五位数的地址和一个结点的值以及下一个结点的地址.输出除去具有相同绝对值的结点的链表以及被除去的链表(由被除去的结点 ...

随机推荐

  1. d2.js学习笔记(七)——动态SVG坐标空间

    目标 在这一章,我们将学习如何使SVG坐标空间是动态的,这样我们的数据可视化不论数据是什么,都始终是可见的. 我们会使得SVG坐标空间尺度上调或下调来适于我们的数据. 三个SVG长方形 我们就从三个长 ...

  2. SmsUtils 发送短信

    import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import j ...

  3. File工具类

    package cn.itcast.bos.utils; import java.io.IOException; import java.net.URLEncoder; import sun.misc ...

  4. 关键C函数备录

    一.搜索指定路径下的文件 (1) intptr_t _findfirst(const char *, struct _finddata_t *);//可以使用通配符*或? (2) int _findn ...

  5. 【数据库】mysql数据库缓存

    配置文件在 /etc/mysql/my.cnf ################### 第一部分:查询数据库缓存相关变量 ################### show variables like ...

  6. git合并分支与解决冲突

    前提: 当前开发的分支为feature/20161129_317606_algoplatform_1,由于feature/20161130_322574_tmstools_1分支有新内容,所以准备将f ...

  7. toString 和 valueOf 总结

    两者的共同点与不同点: 共同点:二者都能用来数据转换,并且在输出对象时会自动调用. 不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString,没有操作 ...

  8. Go语言开发中MongoDB数据库

    伴随着移动端的兴起,Nosql数据库以其分布式设计和高性能等特点得到了广泛的应该用,下面将介绍下Nosql中的mongoDB在Go语言中的应用,在开发前,有必要了解下基础知识 在开发前,导入开发需要用 ...

  9. 【MFC】MFC技巧学习 当做字典来查

    MFC技巧学习 摘自:http://www.cnblogs.com/leven20061001/archive/2012/10/17/2728023.html 1."属性页的添加:创建对话框 ...

  10. 第一章 Oracle10g数据库新特性

    1.1 Oracle10g数据库概述 1.1.1 网格数据库 Oracle10g数据库是一种为网格计算而设计的数据库,是第一个用完整集成的软件基础架构来实现网络计算的数据库系统,其中10g的g表示gr ...