有序链表的合并操作

来源:互联网 发布:唐安琪 知乎 编辑:程序博客网 时间:2024/06/04 18:31

要求不额外使用存储空间,表中无重复元素

void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){//合并有序链表La和Lb,合并后的新表使用头指针Lc    LNode pa = La->next;    LNode pb = Lb->next;    LNode pc;    Lc = pc = La; //用La的头节点作为Lc的头节点    while(pa&&pb)    {        if(pa->data < pb->data)        {            pc->next = pa;            pc = pa;            pa = pa->next;        }        else if(pa->data > pb->data)        {            pc->next = pb;            pc = pb;            pb = pb->next;        }        else //相等时,保留a删除b            pb = pb->next;    }    pc->next = pa?pa:pb;//插入剩余段    delete Lb;//释放Lb的头节点}
0 0