设头指针为La和Lb的单链表分别为线性表La和Lb的存储结构,归并La和Lb,以La为基础
void MergeList_L(LinkList &La, LinkList &Lb)
{
//归并有序表La和Lb,生成新的有序表Lc
//并且在归并之后删除La和Lb
pa = La->next;
pb = Lb->next;
pre = La;//将pre作为链表合并后的新的头节点
while (pa&&pb)//la和lb任意一条链表归并完毕后跳出while循环
{
if (pa->data <= pb->data)//如果pa的值小于等于pb,则pb不插入,pb不动,pa前进
//此时新头节点pre在La,pr作为pa的前驱节点链接pa,pa前进
{
pre->next = pa; pre = pa; pa = pa->next; //pre作为前驱节点,意义在于游标
}
else //pa的值大于pb,则需要把pb插在pa的前边(已知pre作为游标 是pa的前驱元素)
{
pre->next = pb; pre = pb; pb = pb->next;// 插入pb,pb前进 剩下的节点和La看作整体进行比较
}
pre->next = pa ? pa : pb;//插入剩余元素
Free(Lb);
}//MergeList_L
}
A ? x :y 用法:A为判断条件,A为真时为x,为假时为y