合并链表后原链表内容为何改变了?

#include <stdio.h>
#include <stdlib.h>
#define OK 1


typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

int init_LNode(LinkList &L)
{
    int i,n;
    L=new LNode;
    L->next=NULL;   //头节点
    LinkList r=L;
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        LinkList q=new LNode;
        scanf("%d",&q->data);
        r->next=q;
        r=q;
    }
    r->next=NULL;
    return OK;
}

int print_LNode(LinkList L)
{
    L=L->next;
    while(L)
    {
        printf("%d ",L->data);
        L=L->next;
    }
    printf("\n");
    return OK;
}

int merge_LNode(LinkList A,LinkList B,LinkList &C)
{
    C=new LNode;
    C->next=NULL;  //头节点
    LinkList q=C;
    A=A->next;
    B=B->next;
    while(A&&B)
    {
        if(A->data<=B->data)
        {
            q->next=A;
            q=A;
            A=A->next;
        }
        else
        {
            q->next=B;
            q=B;
            B=B->next;
        }
    }
    if(A)  q->next=A;
    if(B)  q->next=B;
    return OK;
}

int main()
{
    LinkList A,B,C;

    init_LNode(A);
    printf("List A:");
    print_LNode(A);

    init_LNode(B);
    printf("List B:");
    print_LNode(B);

    merge_LNode(A,B,C);
    printf("List C:");
    print_LNode(C);
    return 0;
}

 

因为A链表上的每个LNode节点的next指针被改变了,可能指向一个B链表上的某个节点,也可能保持不变,B链表也是如此

是不是这样理解,A和B只是链表的头结点,而后续结点的连线随着C的建立被改变了。