为啥在插入后A和B的值为
img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/826381547366175.png "#left")
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct
{
int Data[MaxSize];
int length;
struct Seqlist *L;
}SeqList;
SeqList *InitList(SeqList * L)
{
L=(SeqList *)malloc(sizeof(SeqList));//分配存放线性表的顺序表空间
L->length=0;
return L;
}
int InsElem(SeqList *L,int x,int i)//将元素x插入到线性表的第i个位置
{
int j;
if( i<1||i>L->length==MaxSize) //i是线性表中无效的位置 *
return 0;
i--;
for(j=L->length;j>i;j--)
L->Data[j]=L->Data[j-1] ; //将位置为i及以后的节点往后移动
L->Data[i-1]=x;
L->length++; //线性表的长度改变1位
}
int main()
{
int a[10],b[10];
SeqList *A,*B,*C;
A=InitList(A);
B=InitList(B);
C=InitList(C);
int n,i,k,j;
printf("请输入数组A和B的长度:");
scanf("%d",&n);
printf("请输入数组A的元素:") ;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入数组B的元素:");
for(i=0;i<n;i++)
scanf("%d",&b[i]);
for(i=0;i<n;i++)
{
InsElem(A,a[i],i+1); // 将数组中的元素插入到线性表中
// printf("顺序表的长度为:%d\n",L.length);
InsElem(B,b[i],i+1);
}
printf("A的元素:");
for(i=0;i<A->length;i++)
printf("%3d",A->Data[i]);
printf("\n");
printf("B的元素:");
for (i=0;i<B->length;i++)
printf("%3d",B->Data[i]);
printf("\n");
for(i=0;i<A->length;i++)
C->Data[i]=A->Data[i];
for(i=0;i<C->length;i++)
printf("%d",C->Data[i]);
C->length=A->length;
for (i=0;i<B->length;i++)
{
k=0;
for (j =0;j <B->length;j++)
{
if (B->Data[i] ==C->Data[j])
{
k++;
}
}
if(k==0)
{
C->Data[C->length++]=B->Data[i];
}
}
printf("A与B的并集C=\n");
for(i=0;i<C->length;i++)
printf("%d",C->Data[i]);