有多组测试数据,每组测试数据占两行。第一行是集合A,第一个整数m(0<=m<=100)代表集合A起始有m个元素,后面有m个非递减排序的整数,代表A中的元素。第二行是集合B,第一个整数n(0<=n<=100)代表集合B起始有n个元素,后面有n个非递减排序的整数,代表B中的元素。每行中整数之间用一个空格隔开。
下面来写一下这个代码,只写中间主体部分
void Merge(Linklist L1,Linklist L2,Linklist L3)
{
Node*p1,*p2,*p3,*t;
p1=L->next;
p2=L->next;//指向首元节点
p3=L;//指向头结点
while(p1&&p2)//只要 p1 和 p2 中有一个指向了链表的末尾(即为NULL),循环就会结束。
{
if(p1->data<=p2->data)
{
t=p1;//将当前指针 p1 指向的节点赋值给临时指针 t
p1=p1->next;//将 p1 指向下一个节点
p3->next=t;// 将新节点 t 插入到 p3 所指节点的后面
p3=p3->next;//将 p3 指向新插入的节点 t
}
else
{
t=p2;
p2=p2->next;
p3->next=t;
p3=p3->next;
}
if(p1!=NULL)p3->next=p1;//有剩余节点,插入L3的尾部
if(p2!=NULL)p2->next=p2;//同理
}
}