#include
#include
struct intNode
{
int k;
intNode *next;
} a[1000],b[1000],c[1000];
int n,m = 1;
intNode *p;
void combine(intNode *a,intNode *b)
{
while (a!=NULL && b!=NULL)
{
if (a->k
{
c[m].k=a->k;
a=a->next;
}
else
{
c[m].k=b->k;
b=b->next;
}
c[m-1].next=&c[m];
c[m].next=NULL;
m++;
}
if (a != NULL)
{
c[m].k=a->k;
a=a->next;
c[m-1].next=&c[m];
c[m].next=NULL;
m++;
}
if (b != NULL)
{
c[m].k=b->k;
b=b->next;
c[m-1].next=&c[m];
c[m].next=NULL;
m++;
}
}
int main()
{
int i;
for (i=0;i<5;i++)
{
a[i].k=i*2+1;
b[i].k=i*2;
a[i].next=&a[i+1];
b[i].next=&b[i+1];
}
a[4].next = NULL;
b[4].next = NULL;
m=0;
p=&a[0];
printf("数组a为:");
while (p!=NULL)
{
printf("%d ",p->k);
p=p->next;
}
p=&b[0];
printf("\n");
printf("数组b为:");
while (p!=NULL)
{
printf("%d ",p->k);
p=p->next;
}
printf("\n");
combine(a,b);
p=&c[0];
printf("合并后的数组为:");
while(p!=NULL)
{
printf("%d ",p->k);
p=p->next;
}
printf("\n");
system("pause");
return 0;
}
因为你给a,b赋值时,最后是让a[4],b[4]的next指向了a[5],b[5],并没有让它们的next为空。