顺序表实现A=AUB,求大神帮忙看一下,问题出在哪里?
吱唔猪 2019-05-18 10:08:12 #include<stdio.h>
#include<malloc.h>
#define MAXSIZE 10
typedef int elemtype;
typedef struct sequlist
{
elemtype data[MAXSIZE];
int last;
} SequenList;
//定义顺序表
//初始化表
SequenList * InitList()
{
SequenList *L;
L=(SequenList * )malloc(sizeof(SequenList));
if(L!=NULL)
{
L->last=-1;
}
return L;
}
//获取数组长度
int SequenList_Length(SequenList *L)
{
return(L->last+1);
}
//插入数据元素
int Insert_SequenList(SequenList *L, elemtype x, int i)
{
int j;
if(L->last=MAXSIZE-1)
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=L->last+1;
return 1;
}
//获取数据元素
elemtype GetData_SequenList(SequenList *L, int i)
{
if(i<1||i>L->last+1)
return 0;
else
return (L->data[i-1]);
}
//搜索数据元素
int Search_SequenList(SequenList *L,elemtype key)
{
int i;
for(i=0;i<=L->last;i++)
if(L->data[i]==key)
return (i+1);
else
return 0;
}
//合并表
void Union_SequenList(SequenList *LA, SequenList *LB)
{
int i, len_la, k;
elemtype x;
len_la=SequenList_Length(LA);
for(i=1;i<=LB->last+1;i++)
{
x=GetData_SequenList(LB,i);
k=Search_SequenList(LA,x);
if(k==0)
{
Insert_SequenList(LA,x,len_la+1);
len_la=SequenList_Length(LA);
}
}
}
void main()
{
int i;
int n,m;
SequenList *LA;
LA=InitList();
printf("请输入LA的表长: ");
scanf("%d",&n);
LA->last=n-1;
printf("请输入LA中的数据元素:\n");
for(i=0;i<LA->last+1;i++)
{
scanf("%d",&LA->data[i]);
}
SequenList *LB;
LB=InitList();
printf("\n请输入LB的表长: ");
scanf("%d",&m);
LB->last=m-1;
printf("\n请输入LB中的数据元素:\n");
for(i=0;i<LB->last+1;i++)
{
scanf("%d",&LB->data[i]);
}
Union_SequenList(LA,LB);
printf("\n合并到LA表后:\n");
for(i=0;i<LA->last+1;i++)
printf("%d ",LA->data[i]);
printf("\n\n");
}