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

     

     解题思路:

    1、注意到结点地址是固定5位整数,故输入数据可以按地址存放。

    2、键值<=10000,故可用辅助数组按键值标记重复出现的键值

    3、用两个辅助数组分别存放去重后的链表、被删除的链表

    4、分别打印

    #include <stdio.h>
    #define Max 100000
    typedef struct{
        int addr,data,next;
    }Node;
    
    int main()
    {
        int pos,n;
        int i,j=0,k=0;
        int k1=0,k2=0;
        Node list[Max];
        Node tmp[Max],del[Max];
        int x,y,z;
        int vis[Max]={0};
        scanf("%d%d",&pos,&n);
        
        for(i=0;i<n;i++)
        {
            scanf("%d%d%d",&x,&y,&z);
            list[x].addr=x;
            list[x].data=y;
            list[x].next=z;
        }
        for(i=pos;pos!=-1;pos=list[pos].next)
        {
            if(!vis[abs(list[pos].data)])
            {
                vis[abs(list[pos].data)]=1;
                tmp[k1++]=list[pos];
            }
            else
            {
                del[k2++]=list[pos];
                
            }
        }
        
    
        for(i=0;i<k1;i++)
        {
            if(i!=k1-1)
            printf("%05d %d %05d
    ",tmp[i].addr,tmp[i].data,tmp[i+1].addr);
            else
            printf("%05d %d -1
    ",tmp[i].addr,tmp[i].data);
        }
        for(i=0;i<k2;i++)
        {
            if(i!=k2-1)
            printf("%05d %d %05d
    ",del[i].addr,del[i].data,del[i+1].addr);
            else
            printf("%05d %d -1
    ",del[i].addr,del[i].data);
        }
        return 0;
    }

     

  • 相关阅读:
    C# 局部函数与事件
    PHP curl_multi_strerror函数
    PHP curl_multi_setopt函数
    PHP curl_multi_select函数
    PHP curl_multi_remove_handle函数
    PHP curl_multi_init函数
    用户&权限
    HEOI2019 游记——240秒处的起死回生
    WPF 判断调用方法堆栈
    WPF 判断调用方法堆栈
  • 原文地址:https://www.cnblogs.com/snzhong/p/12760995.html
Copyright © 2011-2022 走看看