zoukankan      html  css  js  c++  java
  • L2-002 链表去重 (25分)

    L2-002 链表去重

    思路

    为了将删除的和未删除的分开我们给他们赋权(node[i].key),然后按权值排序后即为所求。

    然后在存储链式结构的时候可以采取类似于链式前向星的方法,

    [next存储下一个节点位置的地址\th意为this存储这个位置的地址\val则为边权 ]

    这里改了的是结构体的(node[i])即为存储地址,然后去标记访问遍历模拟就可以了。

    #include <bits/stdc++.h>
    #define endl '
    '
    using namespace std;
    
    int head,n;
    const int maxn=1e5;
    
    int vis[100010];
    
    struct node{
        int val,next,key,th;
        bool operator <(const node x)const{
            return key<x.key;
        }
    
    }node[100010];
    
    int main(){
        scanf("%d%d",&head,&n);
        for(int i=0;i<maxn+5;++i)node[i].key=maxn*2;
        for(int i=0;i<n;++i){
            int a;scanf("%d",&a);
            scanf("%d%d",&node[a].val,&node[a].next);
            node[a].th=a;
        }
        int cnt1=0,cnt2=0;
        for(int i=head;i!=-1;i=node[i].next){
            if(vis[abs(node[i].val)]){
                node[i].key=maxn+(++cnt1);
            }else{
                vis[abs(node[i].val)]=1;
                node[i].key=++cnt2;
            }
        }
        sort(node,node+maxn+1);
        int cnt=cnt1+cnt2;
        for(int i=0;i<cnt;++i){
            if(i!=cnt2-1&&i!=cnt-1){
                printf("%05d %d %05d
    ",node[i].th,node[i].val,node[i+1].th);
            }else{
                printf("%05d %d -1
    ",node[i].th,node[i].val);
            }
        }
    
    }
    
  • 相关阅读:
    ajax的调用
    jqurey的应用
    php数据访问数据层
    php租房子练习
    php投票
    Thinkphp 控制器
    ThinkPHP 框架基础
    php留言板
    php上传文件及头像预览
    php文件操作
  • 原文地址:https://www.cnblogs.com/waryan/p/13583935.html
Copyright © 2011-2022 走看看