将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。 void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)//合并链表La和Lb合并后的新表使用头指针Lc指向 { pa=La->next; 【1】;//pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点 Lc=pc=La; //用La的头结点作为Lc的头结点 while(【2】) // 依次取la和lb中的每个元素 { if(pa->data
data) { pc->next=pa; pc=pa; pa=pa->next; }//取较小者La中的元素,将pa链接在pc的后面,pa指针后移 else if(pa->data>pb->data) { 【3】; 【4】; pb=pb->next; }//取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移 else //相等时取La中的元素,删除Lb中的元素 { pc->next=pa; pc = pa; pa=pa->next; q=pb->next;delete pb ;pb =q;//(删除Lb中相等的节点并释放空间) } } pc->next=pa?pa:pb; //插入剩余段 【5】; //释放Lb的头结点(La的头结点已赋给了Lc,不需释放) }