#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的建立被改变了。