严《数据结构》算法2.1(A=AUB) 实现及测试(结构体是个好东西)
完整代码如下:
#include<stdio.h>
#include<stdlib.h>
#define Size 100
struct list
{
int* p;
int len;
};
typedef struct list Sqlist,*Sqlistp;
void Initlist(Sqlistp s);//用指向结构的指针初始化结构
void Union(Sqlistp s1p,const Sqlist s2);//A=AUB
int equal(const Sqlist s1,const int e);//判断s1.p[i]是否含有e
void insertelem(Sqlistp sp,const int e);//将e插入sp->p[i]的末尾
int main()
{
Sqlist s1,s2;
Initlist(&s1);//传递s1的地址
Initlist(&s2);
Union(&s1,s2);
for(int i=0;i!=s1.len;i++){//输出现在的s1
printf("%d ",s1.p[i]);
}
printf("\n");
return 0;
}
void Initlist(Sqlistp s)
{
s->p=(int*)malloc(sizeof(int)*Size);
printf("Input len:");
scanf("%d",&s->len);
for(int i=0;i!=s->len;i++){
scanf("%d",&s->p[i]);
}
}
int equal(const Sqlist s1,const int e)
{
int flag=0;//标志量
for(int i=0;i!=s1.len;i++){
if(s1.p[i]==e){
flag=1;
break;
}
}
return flag;
}
void Union(Sqlistp s1p,const Sqlist s2)
{
int len2=s2.len;
for(int i=0;i!=len2;i++){
if(!equal(*(s1p),s2.p[i]))
insertelem(s1p,s2.p[i]);
}
}
void insertelem(Sqlistp sp,const int e)
{
sp->p[++sp->len-1]=e;
}
Input len:4
1 2 3 4
Input len:5
2 10 9 4 8
1 2 3 4 10 9 8