• Set


    集合操作过程:最重要掌握集合总并查集:使用结构体数组对其进行模拟,根节点负数表示(-3 表示此集合中有三次子节点),同时采用双亲表示法,子节点采Parent

    #include<iostream>
    using namespace std;
    #define ElementType int
    //使用结构体数组表示树
    //typedef ElementType SetType[10];
    typedef struct SetType{
        ElementType Data;
        int Parent;
    }settype;
    int Find(SetType S[],int X,int N)
    {
        //先找到X在数组中位置
        int i=0;
        for(i=0;i<N &&S[i].Data!=X;i++);
        if(i>=N) return -1;
        for(;S[i].Parent>=0;i=S[i].Parent);
        
        return i;
    }
    void Union(int X1,int X2,SetType S[],int N)
    {
        //-1 *size,表示数量
        int Root1=Find(S,X1,N);
        int Root2=Find(S,X2,N);
        if(S[Root1].Parent<S[Root2].Parent)
        {
            S[Root1].Parent=S[Root1].Parent+S[Root2].Parent;
           S[Root2].Parent=Root1;
        }
        else
        {
            S[Root2].Parent=S[Root1].Parent+S[Root2].Parent;
           S[Root1].Parent=Root2;
        }
        for(int i=0;i<N;i++)
            {
                cout<<S[i].Data<<" "<<S[i].Parent<<endl;
    
            }
    }
    int main()
    {       int Total;
            cin>>Total;
            SetType *Set=new SetType[Total];
            int a,b;
            for(int i=0;i<Total;i++)
            {
                cin>>a>>b;
                Set[i].Data=a;
                Set[i].Parent=b;
    
            }
            cout<<"对数组输出测试"<<endl;
            for(int i=0;i<Total;i++)
            {
                cout<<Set[i].Data<<" "<<Set[i].Parent<<endl;
    
            }
            int X,Root1,Root2;
            cin>>X;
            Root1=Find(Set,X,Total);
            cout<<"根节点是"<<Root1;
            cout<<"节点合并"<<endl;
            cin>>Root1>>Root2;
            Union(Root1,Root2,Set,Total);
        return 0;
    }

     

  • 相关阅读:
    七种性能测试方法
    衡量软件性能三大常用指标及其相互关系
    提高CUI测试稳定性技术
    GUI自动化测试中优化测试用例思维方法
    安装MySQL
    关系数据库基本介绍
    适合做自动化测试的项目
    自动化测试优势与劣势
    如何制定测试计划?
    Selenium1.0与2.0介绍
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/6042099.html
Copyright © 2020-2023  润新知