317900672 发表于 2020-11-21 18:46:24

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

#include<stdio.h>
#define MAXSIZE 20
typedef int ElemType;
#define ok 1;
#define error 0;
typedef int Status;
typedef struct
{
    ElemType data;
    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==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;   //赋值
    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 = L->data;
    }
    L->data = 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);
      ++a.length;
    }
   
    printf("\n");
    printf("Please input b numbers:\n");
   
    for(h=0,b.length=0;h<5;h++)
    {
      scanf("%d",&b.data);
      ++b.length;
    }
   
    arr=&a;
    unionL(arr,b);   //应该是结构体数组
    for(i=0;i<10;i++)
      printf("%d\t",arr->data);
    return 0;
}
页: [1]
查看完整版本: 写了一个求线性表并集的函数,但是数小的时候运行不正确