题意:

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

最新文章

  1. Webdriver设置Chrome属性
  2. delegate和protocol
  3. DataTable模拟
  4. 64位Windows无法打开会声会影X5的解决方法
  5. [Tomcat]如何在同一台机部署多个tomcat服务
  6. 使用c#生成Identicon图片
  7. JAAS LOGIN IN WEBLOGIC SERVER--reference
  8. Selenium webdriver 封装与重用
  9. logisticregression
  10. ftp桥接到http服务
  11. ASP.NET初始化流程分析2
  12. MySQL查看和修改表的存储引擎(转载+加点东西)
  13. C#实现按键计算器功能
  14. css3新特性总结
  15. array_filter与array_map
  16. E212: Can&#39;t open file for writing
  17. 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
  18. paired-end reads的拼接
  19. redis 五大数据类型以及操作
  20. 请问下.net俱乐部这个组织现在还存在么?

热门文章

  1. Gulp实例(包括环境搭建的自动检测)
  2. 2015 Syrian Private Universities Collegiate Programming Contest
  3. 智课雅思词汇---二十三、动词性后缀-ate-fy-ish-ize
  4. (CSharp)克隆控件事件
  5. 转:Hive性能优化之ORC索引–Row Group Index vs Bloom Filter Index
  6. 【51nod-1046】最大子矩阵和
  7. 【Wannafly挑战赛10 - B】小H和密码(DP)
  8. PostgreSQL归档日志 手动触发归档 select pg_switch_xlog()
  9. Electron 打包时下载 xxx-electron-v1.6.8--x64.zip 文件出错
  10. GIL、死锁与递归锁