主题:关于单链表的合并的问题 调试了半天找不到错在哪
[code]
struct Linklist *merge(struct Linklist *La,struct Linklist *Lb,
struct Linklist *Lc)
{
struct Linklist *pa,*pb,*pc1,*pc2;
Lc=(struct Linklist*)malloc(LEN);
pc1=Lc;
pa=La->next;
pb=Lb->next;
while(pa||pb)
{
pc2=(struct Linklist*)malloc(LEN);
pc1->next=pc2;pc1=pc2;
if(!pa)
{
pc1->data=pb->data; pb=pb->next;}
else if(!pb)
{
pc1->data=pa->data; pa=pa->next;}
else if(pa->data<pb->data)
{
pc1->data=pa->data; pa=pa->next;}
else if(pa->data==pb->data)
{
pc1->data=pa->data; pa=pa->next; pb=pb->next;
}
else{pc1->data=pb->data; pb=pb->next;}
++i; //i是记录结点数.
}
pc1->next=NULL;
free(La);
free(Lb);
return Lc;
}
[/code]
这个只是合并的那个函数 .. A.B为2个递增的单链表.
问题出在第一个结点貌似被覆盖了..后面的结点打印的出来
哪位看一下
struct Linklist *merge(struct Linklist *La,struct Linklist *Lb,
struct Linklist *Lc)
{
struct Linklist *pa,*pb,*pc1,*pc2;
Lc=(struct Linklist*)malloc(LEN);
pc1=Lc;
pa=La->next;
pb=Lb->next;
while(pa||pb)
{
pc2=(struct Linklist*)malloc(LEN);
pc1->next=pc2;pc1=pc2;
if(!pa)
{
pc1->data=pb->data; pb=pb->next;}
else if(!pb)
{
pc1->data=pa->data; pa=pa->next;}
else if(pa->data<pb->data)
{
pc1->data=pa->data; pa=pa->next;}
else if(pa->data==pb->data)
{
pc1->data=pa->data; pa=pa->next; pb=pb->next;
}
else{pc1->data=pb->data; pb=pb->next;}
++i; //i是记录结点数.
}
pc1->next=NULL;
free(La);
free(Lb);
return Lc;
}
[/code]
这个只是合并的那个函数 .. A.B为2个递增的单链表.
问题出在第一个结点貌似被覆盖了..后面的结点打印的出来
哪位看一下