**解题思路:**
- 输入表A,B
- 在B中获取每个数据依次比较是否在A中
- 无就插入到A表之后输出
- 最后记得换行
**代码部分**
# include# define MAXSIZE 1000
# include# define LEN sizeof(SequenList)
typedef struct
{
int data[MAXSIZE];
int last;
} SequenList;
SequenList *Init_SequenList( )//初始化
{
SequenList *L;
L=(SequenList *)malloc(LEN);
if(L!=NULL)
{
L->last=-1;
}
return L;
}
void Creat_SequenList(SequenList *L,int n)//创建顺序表
{
int Print_SequenList(SequenList *L);//声明
int i;
if(L!=NULL)
{
for(i=0;idata[i]);
L->last++;
}
}
Print_SequenList(L);//创建表完时就把表输出
}
int Insert_SequenList(SequenList *L,int x,int i)//插入
{
int j;
if(L->last+1>=MAXSIZE)//判断顺序表是否满
return 0;
if(i<1||i>L->last+2)//判断插入的位置上
return -1;
for(j=L->last;j>=i-1;j--)//此处是插入操作
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return 1;
}
int Length_SequenList(SequenList *L)//表长
{
return L->last+1;
}
int Getdata_SequenList(SequenList *L,int i)
{
if(i<1||i>L->last+1)
return 0;
return L->data[i-1];
}
int Search_SequenList(SequenList *L,int data)
{
int i;
for(i=0;i<=L->last;i++)
if(data==L->data[i])
return 1;
return 0;
}
int Print_SequenList(SequenList *L)//遍历
{
int i;
for(i=0;ilast;i++)
printf("%d ",L->data[i]);//输出后需要换行 因此分两步
printf("%d\n",L->data[L->last]);//输出最后元素后换行
}
int Union(SequenList *A,SequenList *B)
{
int len_a,key,i,k;//
len_a=Length_SequenList(A);
for(i=0;i<=B->last;i++)//=忘记 出错 (遍历表B)
{
key=Getdata_SequenList(B,i+1);
k=Search_SequenList(A,key);
if(k==0)
{
Insert_SequenList(A,key,len_a+1);
len_a=Length_SequenList(A);
}
Print_SequenList(A);
}
}
int main()
{
SequenList *A,*B;
int a,b;
while(scanf("%d",&a)!=EOF)
{
A=Init_SequenList();//每次的初始化很重要
B=Init_SequenList();//A!!!写错A
Creat_SequenList(A,a);
scanf("%d",&b);
Creat_SequenList(B,b);
Union(A,B);
printf("\n");
}
return 0;
}
感jio不错记得点赞~
0.0分
5 人评分