zoukankan      html  css  js  c++  java
  • A=AUB

    #include<stdio.h>
    #include<stdlib.h>

    #define LIST_MAX 10
    #define LIST_ADD 2

    typedef struct
    {
        int *elem;
        int length;
        int listsize;
    }SqList;

    int InitList(SqList *L)
    {
        L->elem=(int *)malloc(LIST_MAX*sizeof(int));
        if(!L->elem)
            exit(-1);
        L->length=0;
        L->listsize=LIST_MAX;
        return 0;
    }
    int DestoryList(SqList *L)
    {
        free(L->elem);
        L->elem=NULL;
        L->length=0;
        L->listsize=0;
        return 0;
    }
    int InsertElem(SqList *L,int i,int e)
    {
        int *newbase,*p,*q;
        if(i<1||i>L->length+1)
            exit(-1);
        if(L->length>=L->listsize)
        {
            newbase=(int*)realloc(L->elem,(L->length+LIST_ADD)*sizeof(int));
            if(!newbase)
            {
                printf("分配空间失败! ");
                exit(-1);
            }
            L->elem=newbase;
            L->listsize+=LIST_ADD;
        }
        p=L->elem+i-1;
        q=L->elem+L->length-1;
        for(;q>=p;q--)
            *(q+1)=*q;
        *p=e;
        ++L->length;
        return 0;
    }    
    int LocateElem(SqList L,int e,int (*visit)(int v1,int v2))
    {
        int *p,i=1;
        p=L.elem;
        while(p<L.elem+L.length&&!visit(*p,e))
        {
            ++i;
            ++p;//需要考虑的是当在链表L中找不到满足条件的元素时,p会指向链表结尾的下一个元素的地址
        }
        if(i<=L.length)
            return i;
        else
            return 0;
    }    

    int Equal(int v1,int v2)
    {
        if(v1==v2)
            return 1;
        else
            return 0;
    }                
    int GetElem(SqList L,int i,int *e)
    {
        if(i<1||i>L.length)
            exit(-1);
        *e=*(L.elem+i-1);
        return 1;
    }
    int Union(SqList *La,SqList Lb,int (*visit)(int v1,int v2))      //主要用到的合并函数
    {
        int i=1;
        int e;
        for(;i<=Lb.length;i++)
        {
            GetElem(Lb,i,&e);
            if(!LocateElem(*La,e,visit))
            {
                InsertElem(La,La->length+1,e);
            }
        }
        return 0;
    }
    int main()
    {
        int i,e0;
        SqList La,Lb;
        
        InitList(&La);

        for(i=1;i<=6;i++)
            InsertElem(&La,i,i);    

        for(i=1;i<=6;i++)    
        {
            GetElem(La,i,&e0);
            printf("%d ",e0);
        }
        printf(" ");    

        InitList(&Lb);
        
        for(i=1;i<=6;i++)
            InsertElem(&Lb,i,2*i);

        for(i=1;i<=6;i++)    
        {
            GetElem(Lb,i,&e0);
            printf("%d ",e0);
        }
        printf(" ");
        
        Union(&La,Lb,Equal);
        
        for(i=1;i<=La.length;i++)    
        {
            GetElem(La,i,&e0);
            printf("%d ",e0);
        }
        printf(" ");
        
        DestoryList(&La);
        DestoryList(&Lb);
        
        return 0;
    }

  • 相关阅读:
    (6)阿里PAI_文本关键信息抽取、相似度分析
    NLP——LDA(Latent Dirichlet Allocation-潜在狄利克雷分布)
    (4)阿里PAI_基于用户画像的物品推荐
    (3)阿里PAI_基于协同过滤的商品推荐
    C++ 11—const用法(C++ primer读书笔记)
    Python基础知识回顾
    Qt学习笔记(一)
    伪代码的写法(转载)
    中国大学MOOC-陈越、何钦铭-数据结构-2015秋02-线性结构1题解
    数电碎片
  • 原文地址:https://www.cnblogs.com/xiaoshi-com/p/5475150.html
Copyright © 2011-2022 走看看