не удалось объединить два связанных списка

#linked-list

Вопрос:

Я новичок в C , и я пытаюсь объединить два связанных списка, но потерпел неудачу. Третий связанный список остается статусом, который не был консолидирован. Кто-нибудь может помочь проверить мой код? Любое предложение будет полезно.

 class Node
{
    public:
        int data;
        Node *link;
};

void con(Node *A, Node *B, Node *C);
void print(Node *P);

int main(int argc, char *argv[]) {
    //first linked list
    Node *first_1 = new Node();
    Node *first_2 = new Node();
    
    first_1->data = 1;
    first_1->link = first_2;
    first_2->data = 2;
    first_2->link = NULL; 
    
    //second linked list
    Node *second_1 = new Node();
    Node *second_2 = new Node();
    
    second_1->data = 7;
    second_1->link = second_2;
    second_2->data = 8;
    second_2->link = NULL; 

    //consolidate
    Node *consolidation = new Node();
    con(first_1,second_1,consolidation);
    print(consolidation);

    system("PAUSE");
    
    return 0;
}
 

Функция консолидации здесь:

 void con(Node *A, Node *B, Node *C){
    if(A == NULL amp;amp; B == NULL)
        C == NULL;
    else if(A != NULL amp;amp; B == NULL)
        C = A;
    else if(A == NULL amp;amp; B != NULL)
        C = B;
    else{
        Node *P = A;
        while(P->link != NULL){
            P = P->link;
        }
        P->link = B;
        C = A;
    }
}
 

Функция печати здесь:

 void print(Node *P){
    Node *t = P;
    while(t!=NULL){
        printf("address=%p, ",t);  
        printf("data=%d ",t->data); 
        printf("link=%pn",t->link);  
        t=t->link;
    } 
    printf("n");
}