#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct
{
int *elem;//基地址
int length;//当前长度
int listsize;//总容量,以格式的大小为单位
}linklist;//建立线性表
int creat(linklist*L)
{
L->elem=(int*)malloc(100*sizeof(int));
if(!L->elem)exit(-2);
L->length=0;
L->listsize=100;
return 1;
}//构造一个空的线性表
int main()
{
linklist La,Lb,Lc;
creat(&La);
creat(&Lb);
creat(&Lc);
int a=0;
/*for(int a=0;a<3;a++)
{
printf("请输入La的第%d个数据:",a+1);
scanf("%d",&La.elem[a]);
La.length++;
}*/
printf("请输入升序集合La:");
scanf("%d",&La.elem[a]);
for(a=0;La.elem[a]!=0;)
{
scanf("%d",&La.elem[++a]);
La.length++;
}
printf("La的总长度为:%d\n",La.length);
printf("请输入升序集合Lb:");
scanf("%d",&La.elem[a]);
for(int b=0;Lb.elem[b]!=0;)
{
scanf("%d",&Lb.elem[++b]);
Lb.length++;
}
/*for(int b=0;b<4;b++)
{
printf("请输入Lb的第%d个数据:",b+1);
scanf("%d",&Lb.elem[b]);
Lb.length++;
}*/
printf("Lb的总长度为:%d\n",Lb.length);
int *pa_last=La.elem+La.length-1;
int *pb_last=Lb.elem+Lb.length-1;
int *pa=La.elem,*pb=Lb.elem,*pc=Lc.elem;
while((pa<=pa_last)&&(pb<=pb_last))
{
if(*pa<*pb)*pc++=*pa++;
else if(*pa>*pb) *pc++=*pb++;
else *pc++=*pa++=*pb++;
}
while(pa<=pa_last)
*pc++=*pa++;
while(pb<=pb_last)
*pc++=*pb++;
printf("表Lc的数据为:\n");
for(int i=0;Lc.elem+i<pc;i++)//pc在之前多自加了一次,所以不是<=
printf("%d\n",*(Lc.elem+i+1));
printf("\n");
return 0;
}
我有上百度Hi,可以加一下再聊吗?或者我的QQ是365017808,我们加一下再聊!
追答先采纳再说
追问如果你相信我的话那就先解决再采纳,如果最基本的信任都没有的话,其他的就不用谈了。
追答你的指针有问题,就提示到这。采不采纳无所谓
追问好吧!谢谢!