题意:

给出一个链表,删除绝对值相同的结点,对于每个绝对值为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. Oracle数据库常用监控语句

    --在某个用户下找所有的索引 select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from ...

  2. javascript练习题·(1)

    1.参数集合是什么? (function(){ return typeof arguments; })(); 的结果是? typeOf只能以字符串的形式返回数据类型 js中包括6种数据类型--Numb ...

  3. 【C#基本功 控件的用法】 Toolbar的用法

    之前从事Labview编程,Labview是一门快速编程的语言,虽然快速,但作为一门语言他灵活性不够,有些方面也不是很给力,就比如 Toolbar labview就没有Toolbar的基础控件,虽然可 ...

  4. java正则表达式(基础篇)

    1.数量表达 {n} :出现n次 {m,n}:最少出现m次,最多出现n次 *:表示出现>=0次,相当于{0,} +:表示出现>=1次,相当于{1,} ?:表示出现1次或0次 |:左右两边正 ...

  5. GitLab使用总结[转]

    http://blog.csdn.net/huaishu/article/details/50475175 GitLab使用总结

  6. IOS-SQLite数据库使用详解

    使用SQLite数据库 创建数据库 创建数据库过程需要3个步骤: 1.使用sqlite3_open函数打开数据库: 2.使用sqlite3_exec函数执行Create Table语句,创建数据库表: ...

  7. Linux操作系统中的文件目录结构详细介绍

    "/" :Linux文件系统的入口.也是最高一级的目录. "/bin":基本系统所需要的命令,功能和"/usr/bin"类似,这个目录下的文 ...

  8. 理解 HTTP2.0

    链接 HTTP/2 头部压缩技术介绍 我们知道,HTTP/2 协议由两个 RFC 组成: 一个是 RFC 7540,描述了 HTTP/2 协议本身:一个是 RFC 7541,描述了 HTTP/2 协议 ...

  9. mac上安装mongoDb以及简单使用

    年初粗略学习了下node,这好几个月没玩,突然发现已经忘完了,还是简单记录下基本知识,方便再次使用时资料查找. 一.mongoDb安装 在mac上安装了brew的情况下,可以直接执行命令 brew i ...

  10. 第一次使用stackoverflow的寻求帮助

    最近在研究一项资料很少的技术--Drools,遇到一个很棘手的问题,搜遍所有网站,百度.谷歌都找不到解决方案.无奈之下,想起了stackoverflow这个技术问答网站.于是鼓足勇气,用蹩脚的英文在上 ...