请问一下:第一个else能否改为else if?原因是什么?有点懵
第一个else必须改为else if,不然第一个 if 是 < ,第一个 else 则是 >= ,函数修改如下,见注释处,供参考:
void common_A(LinkList& A,LinkList& B)//求 A B 的交集
{
LNode*p = A->next,*q = B->next;
LNode*r = A,*u = NULL;
A->next = NULL;
while(p && q){
if (p->data < q->data){
u = p;
p = p->next;
free(u);
}
else if (p->data > q->data){ //修改
u = q;
q = q->next;
free(u);
}
else{
r->next = p;
r = p;
p = p->next;
r->next = NULL; //修改
u = q;
q = q->next;
free(u);
}
}
while (p){
u = p;
p = p->next;
free(u);
}
while (q){
u = q;
q = q->next;
free(u);
}
free(B); //修改
}
必须改,你这代码不对。
为什么要手写,敲成电子档,编译一下就找到错误了。