问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct
{
int Data[MaxSize];
int length;
struct Seqlist*pNext;
}SeqList;
void InitList(SeqList *L)
{ L=(SeqList *)malloc(sizeof(SeqList));//分配存放线性表的顺序表空间
L->length=0;
}
int InsElem(SeqList *L,int x,int i)//将元素x插入到线性表的第i个位置
{
int j;
if( i<1||i>L->length+1) //i是线性表中无效的位置
return 0;
for(j=L->length;j>i;j--)
L->Data[j]=L->Data[j-1] ; //将位置为i及以后的节点往后移动
L->Data[i-1]=x;
L->length++;//线性表的长度改变1位
return 1;
}
int main()
{
int a[10],b[10];
SeqList *A,*B,*C;
InitList(A);
InitList(B);
InitList(C);
int n,i,k,j;
printf("请输入数组A和B的长度:");
scanf("%d%d",&A->length,&B->length);
printf("请输入数组A的元素:") ;
for(i=0;i<A->length;i++)
scanf("%d",a[i]);
printf("\n");
printf("请输入数组B的元素:") ;
for(i=0;i<10;i++)
{
InsElem(A,a[i],i+1); // 将数组中的10个元素插入到线性表中
// printf("顺序表的长度为:%d\n",L.length);
InsElem(B,b[i],i+1);
}
for(i=0;i<B->length;i++)
scanf("%d",b[i]);
printf("\n");
for(i=0;i<A->length;i++)
C->Data[i]=A->Data[i];
for (i = 0; i < B->length; i++)
A->length=B->length;
for (i = 0; i < B->length; i++)
{
int k=0;
for (j = 0; j < C->length; j++)
{
if (B->Data[i] == C->Data[j])
{
k++;
break;
}
}
if(k==0)
C->Data[C->length++]=B->Data[i];
}
printf("\nA与B的并集\nC=");
for(i=0;i<C->length;i++)
printf("%d",C->Data[i]);
}
看看小柏吧,为什么他的输入是这样的