第一个else能否改为else if

请问一下:第一个else能否改为else if?原因是什么?有点懵

img

第一个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);  //修改
}

必须改,你这代码不对。
为什么要手写,敲成电子档,编译一下就找到错误了。