今天是第一天开始记录博客,作为转专业考研过程的记录,每天都要做一道题目并存下来,至于知识系统的整理就放在gihub
/*这个函数实现了将两个递增链表合并*/
List Merge(List L1, List L2)///合并函数 重点要写的函数!
{ List L3,pa,pb,pc;
L3=(List)malloc(sizeof(struct Node));
pc=L3;
pa=L1->Next;
pb=L2->Next;
while(pa&&pb)
{
if(pa->Data<=pb->Data)//不需要把==的条件单列,比如L1,L2中都有同个值,先把L1的连上,再将L1的下个值与L2作比较,只要是同值,一定是优先连上,如果是完全一样的表,后面的宏语言会将另一个表连上
{ pc->Next=pa;
pc=pa;
pa=pa->Next;
}else{
pc->Next=pb;
pc=pb;
pb=pb->Next;
}
}
pc->Next=pa? pa:pb;//宏语言,pa为NULL 即假值,这时pc->Next=pb
L1->Next=NULL;//L1,L2是指针,只值进指针的值,不能修改指针的任何内容,故前面我们设置了临时指针来作为移动定位的工具,但也只是这样,对这两条链本身你不能做任何操作,但是可以加上操作,比如前面用L3连上去
L2->Next=NULL;//L2,L2是传值,将他们SET为NULL是可以的,这两个指针就没方法用来定位链了,只能用L3了,前面那些结点都被连到L3里
return L3;
}