题意:

给出一个链表,删除绝对值相同的结点,对于每个绝对值为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. 新东方雅思词汇---7.4、cap

    新东方雅思词汇---7.4.cap 一.总结 一句话总结: 抓住 capable 英 ['keɪpəb(ə)l]  美 ['kepəbl]  adj. 能干的,能胜任的:有才华的 词组短语 capab ...

  2. python学习笔记(session)

    昨天提到想加入cookies 测试登录后的接口 尝试了下 只要用 session方法即可 代码如下 #!/usr/bin/env python # -*- coding: utf_8 -*- impo ...

  3. matlab 学习笔记

    脚本名称不能与matlab里面的关键字一样.否则会报当MATLAB中报错,“SCRIPT ******”怎么解决 保留已画图形:hold on 矩阵连接:横向 f=[m,n];   纵向 f=[m;n ...

  4. ggplot 画 条形图

    今天开会谈了半天自己的研究结果,同事皱着眉头,第一好像她没大听懂,第二感觉眼前一亮,但不知怎么落地.落地这个事情,交给时间吧,我想练熟我的分析. 今天搞了个简单的,条形图. 就是EXCEL里面经常玩的 ...

  5. js的onclick字符串参数的解决办法

    <a href='#' onclick='onedit(\""+ name + "\")';>编辑</a>" 一些写法实例~~ ...

  6. Ajax基础(四)--dom元素简单操作

    1 //js对dom元素的操作 //添加dom元素 var param = document.createElement("p"); var node = document.cre ...

  7. iOS自动化探索(五)自动化测试框架pytest - Assert断言的使用

    使用assert语句进行断言 pytest允许使用标准的python assert语法,用来校验expectation and value是否一致 代码演示: def func(): def test ...

  8. 启动代码之开iCache

    1.什么是cache,有什么用    cache是一种内存,叫高速缓存.从容量来说:CPU < 寄存器 < cache < DDR从速度来说:CPU > 寄存器 > ca ...

  9. 使用PorterDuffXfermode画出刮刮奖效果p146-p148

    package com.zzw.Qunyinzghuan3; import android.content.Context; import android.graphics.Bitmap; impor ...

  10. Struts08---全局结果和全局异常的配置

    01.创建测试页面 <%-- 验证全局结果 和 局部结果 --%> <a href="user/UserAction_add">新增用户</a> ...