鱼C论坛

 找回密码
 立即注册
查看: 2051|回复: 0

[技术交流] 写了一个求线性表并集的函数,但是数小的时候运行不正确

[复制链接]
发表于 2020-11-21 18:46:24 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#define MAXSIZE 20
typedef int ElemType;
#define ok 1;
#define error 0;
typedef int Status;
typedef struct
{
    ElemType data[MAXSIZE];
    int length;
}List;

void unionL(List *La,List Lb)
{
    ElemType ListInsert(List *L,int i,ElemType e);
    ElemType GetElem(List L,int i,ElemType *e);
    int Listlength(List L);
    int LocateElem(List L,ElemType e);
   
    int La_len,Lb_len,i;
    ElemType e;
    La_len=Listlength(*La);
    Lb_len=Listlength(Lb);
    for(i=1;i<Lb_len;i++)
    {
        GetElem(Lb,i,&e);
        if(!LocateElem(*La,e))
            ListInsert(La,++La_len,e);
    }
}

int LocateElem(List L,ElemType e)    //获得元素
{
    int i=0,number=0;
    for(i=0;i<L.length;i++)
    {
        if(L.data[i]==e){number=1;break;}
        else {number=0;}
    }
    return number;
}


int Listlength(List L)
{
    int i;
    i=L.length;
    return i;     //次数
}

Status GetElem(List L,int i,ElemType *e)   //日常中的排序i从1开始
{
    if(i>L.length || i<1 || L.length==0)   //查误
        return error;
    *e=L.data[i-1];   //赋值
    return ok;
}




ElemType ListInsert(List *L,int i,ElemType e)   //日常中的排序i从1开始
{
    int k;
    if(L->length==MAXSIZE)
        return error;
    if(i<1 || i>L->length+1)
        return error;
    if(i<=L->length)
    {
        for(k=L->length-1;k>=i-1;k--)
            L->data[k+1] = L->data[k];
    }
    L->data[i-1] = e;
    L->length++;
    return ok;
}



int main()
{
    void unionL(List *La,List Lb);
    List a,b;
    int i,h;
    List *arr;
    printf("Please input a numbers:\n");
   
    for(h=0,a.length=0;h<5;h++)
    {
        scanf("%d",&a.data[h]);
        ++a.length;
    }
   
    printf("\n");
    printf("Please input b numbers:\n");
   
    for(h=0,b.length=0;h<5;h++)
    {
        scanf("%d",&b.data[h]);
        ++b.length;
    }
   
    arr=&a;
    unionL(arr,b);     //应该是结构体数组
    for(i=0;i<10;i++)
        printf("%d\t",arr->data[i]);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表