主题:出问题了,请大家来看看
void merge(Listlink La,Listlink Lb)
{
Listlink q,p,fp,fq;
fp = La;
fq = Lb;
p = La->next;
q = Lb->next;
while(p&&q)
{
if(fp->data==p->data)
{
fp->next = p->next;
free(p);
p = fp->next;
}
else if(p->data>q->data)
{
fq->next = q->next;
fp->next = q;
q->next =p;
fp = q;
q = fq->next;
}
else if(p->data==q->data)
{
p = p->next;
fp = fp->next;
fq = q->next;
free(q);
q = fq->next;
}
else
{
p = p->next;
fp = fp->next;
}
}
while(q)
{
if(fq->data==q->data)//这个分支进不去
{
fq->next = q->next;
free(q);
printf("aaaaaaa\n");
q = fq->next;
}
else
{
fq->next = q->next;
q->next = fp->next;
fp->next = q;
fp = fp->next;
q = fq->next;
}
}
}
题目要求是将两个线性表AB合并为一个表A,要求合并后A中不能有相同的元素,但合并前AB中允许有相同元素。
现在的问题是我不知道为什么第二个while中的if的一个分支进不去
{
Listlink q,p,fp,fq;
fp = La;
fq = Lb;
p = La->next;
q = Lb->next;
while(p&&q)
{
if(fp->data==p->data)
{
fp->next = p->next;
free(p);
p = fp->next;
}
else if(p->data>q->data)
{
fq->next = q->next;
fp->next = q;
q->next =p;
fp = q;
q = fq->next;
}
else if(p->data==q->data)
{
p = p->next;
fp = fp->next;
fq = q->next;
free(q);
q = fq->next;
}
else
{
p = p->next;
fp = fp->next;
}
}
while(q)
{
if(fq->data==q->data)//这个分支进不去
{
fq->next = q->next;
free(q);
printf("aaaaaaa\n");
q = fq->next;
}
else
{
fq->next = q->next;
q->next = fp->next;
fp->next = q;
fp = fp->next;
q = fq->next;
}
}
}
题目要求是将两个线性表AB合并为一个表A,要求合并后A中不能有相同的元素,但合并前AB中允许有相同元素。
现在的问题是我不知道为什么第二个while中的if的一个分支进不去