题意:

给出一个链表,删除绝对值相同的结点,对于每个绝对值为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. Dagger2 中的 Scope

    Dagger2 中虽然概念挺多的,但是大部分花时间都能理清.包括看人家的分析,Debug 代码下去也能懂.但是对于 scope 的用法以及实现原理还是有点难理解的.主要的问题也像简书上的文章所说: 自 ...

  2. linux配置静态ip,关闭防火墙

    在vmware下安装centos6.5通过桥接方式访问外网,因此需要配置ip. 一.ip配置 1.1. 配置动态ip vi /etc/sysconfig/network-scripts/ifcfg-e ...

  3. Ajax编程(HTTP请求与响应及API)详解

    AJAX编程 即 Asynchronous [e'sɪŋkrənəs] Javascript And XML, AJAX 不是一门的新的语言,而是对现有技术的综合利用. 本质是在HTTP协议的基础上以 ...

  4. 【zzulioj-1676】与同学比身高(综合)

    题目链接: http://acm.zzuli.edu.cn/problem.php?id=1676 题目描述 新学年开学了,学校又迎来了一批新同学,已知部分同学之间的身高关系,请列出可推断出的同学之间 ...

  5. C3P0使用详解

    定义: C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate,Spring等. 数据库连接池的基本思想就是为数据库连接建立一个"缓冲池".预先在缓冲池中放入 ...

  6. 用 hash 找出指定一个数, 这个数是数组两个值的总和, 找出两个值的坐标

    var twoSum = function(nums, target) { var len = nums.length; var exist = {} //这里利用了hash来存放已知的 exist[ ...

  7. JS同源策略和跨域访问

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只 ...

  8. Exception in thread "main" java.lang.OutOfMemoryError: Java heap space(Java堆空间内存溢出)解决方法

    http://hi.baidu.com/619195553dream/blog/item/be9f12adc1b5a3e71f17a2e9.html问题描述Exception in thread &q ...

  9. 【MFC】MFC改变对话框中静态文本的字体大小

    MFC改变对话框中静态文本的字体大小 2010/08/09 11:30 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体.对于你的问题,需要首先用CreateFont来建立一个 ...

  10. 启动mysql 失败,“Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql' ”

    一.Mac OS X的升级或其他原因可能会导致MySQL启动或开机自动运行时 在MySQL操作面板上会提示“Warning:The /usr/local/mysql/data directory is ...