求改错,两个线性表啦la,lb合并成lc,

2025-03-01 02:31:08
推荐回答(4个)
回答1:

#include
#include
#define MAXSIZE 100
typedef struct
{
int elem[MAXSIZE];
int length;
}sqlist;//定义顺序表
void listmerge(sqlist *la,sqlist *lb,sqlist *lc)
{
int k;
k=0;
int m=0,n=0;
if(la->length+lb->length<=MAXSIZE)
{
while(klength )
{
lc->elem[k]=la->elem[k];
k++;
}
while( k-la->lengthlength)
{
lc->elem[k]=lb->elem[k-la->length];
k++;
}
lc->length=k;
}
else printf("out of bound");
}
void print(sqlist *l)
{
int j;
for(j=0;jlength;j++)
{
printf("%d",l->elem[j]);
}
printf("\n");
}
void input1(sqlist *la)
{
int n,i;
printf("请输入元素个数n:");
scanf("%d",&n);
printf("请输入l:");
for(i=0;i {
scanf("%d",&(la->elem[i]));
*(&la->length)=i+1;
}
}
int main()
{
sqlist la,lb,lc;
input1(&la);
input1(&lb);
listmerge(&la,&lb,&lc);
print(&lc);
system("pause");
return 0;
}

回答2:

lc->length=la->length+lb->length;
} => 这个括号 放在
while(ilength) 前面

回答3:

void input1(sqlist *la)
{int n,i;
printf("请输入元素个数n:");
scanf("%d",&n);
printf("请输入l:");
for(i=0;i{scanf("%d",&la->elem);}//改为{scanf("%d",&ls->elem[i]);}
}

回答4:

报的什么错?
while(ilength)
{lc->elem[k]=la->elem[i];
i++;
k++;
}
while(jlength)
{
lc->elem[k]=lb->elem[j];
j++;
k++;
}
lc->length=la->length+lb->length;

这段代码放在
while(ilength&&jlength)

{。。。。。。} 之外