写了一个求线性表并集的函数,但是数小的时候运行不正确
#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]