能不能帮看看,不知道逻辑哪错了,结果一直不对,就是顺序表求两个集合并集

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50
typedef int elemType;
typedef struct
{
elemType elem[MAXSIZE];
int last;
}SeqList;//定义线性表

void InitList( SeqList L)
{
L=(SeqList
)malloc(sizeof(SeqList));//dongtaifenpei
L->last=0;
//return L;
}//初始化

void creatSeqList(SeqList *L)
{
int i;
int n;
L->last = 0;

    printf("请输入集合的元素个数且个数小于%d:\n",MAXSIZE);//表示 创建的表最大能存多少个数据

    scanf("%d",&n);

    printf("请输入集合中的元素:\n");
    for (i = 0; i < n; i++)
{
    scanf("%d",&(L->elem[i]));
    L->last++; 
}

}//建立线性表
void unin(SeqList *La, SeqList Lb)

 { 
    int i,j, La_len,Lb_len;

    elemType e;

    La_len=La->last;

    Lb_len=Lb.last;

    for(i=0; i<=Lb_len;i++)

    { e=Lb.elem[i];//取出lb中的每一个元素
        j=0;
    while(j<=La_len && e!=La->elem[j]) j++; 

    if(j>La_len)

    if(La_len<MAXSIZE) 
        
    La->elem[++ (La->last)]=e;//插入
     La->last++; 

    }

}union//求并集
printfList(SeqList *L)
{
int i;

    for(i = 0; i < L->last; i++)
{
        printf("%d ",L->elem[i]);
    
}

    printf("\n");

}

int main(void)
{
SeqList La,Lb;
//创建顺序表 La和Lb

    printf("正在创建表La,请按提示输入数据\n");

    creatSeqList(&La);
//创建顺序表 Lb

    printf("正在创建表Lb,请按提示输入数据\n");

    creatSeqList(&Lb);

    printf("La中的数据是:\n");

    printfList(&La);

    printf("Lb中的数据是:\n");

    printfList(&Lb);   

    unin(&La,Lb);   
//求并集
    printf("A与B的并集是:\n");

    printfList(&La);

    return 0;

}

img

unin函数第10行,i<=Lb_len改为i<Lb_Ien,不能等于,会越界

union方法里最后last加了两次