文字解释


  1. 创建三个指针变量,pa,pb,pc,pa,pb为游标
  2. 把pc置为pa的头节点.
  3. pa,pb,分别置为两个链表的第一个节点
  4. 比较pa和pb,将pc->next置为两者中大的那一个(假设pa大,pc->next=pa,下面都是假设pa大)
  5. ,然后pc=pc->next,pa=pa->next(方便下次比较,将游标置为下一个)
  6. 如果pa或者pb有一个为空,pc->next=pa(如果pa非空)

    代码例子


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int Mergelist(stu *l1,stu *l2){
stu* pa,pb,pc;
pc=pa=l1->next;
pb=l2->next;
while (pa && pb){
if (pa->data<=pb->data){
pc->next=pa;
pc=pa; //等价pc=pc->naxt
pa=pa-next;
}else{
pc->next=pb;
pc->pb;
pb=pb->next;
}
}
pc->next = (pa ? pa : pb);//插入剩余段
free(l2);
}