A∪(B∩C)

kameron 2009-02-28 09:54:17
【问题】
已知递增有序的单链表A,B和C分别存储了一个集合,设计算法实现A:=A∪(B∩C),并使求解结构A仍保持递增。要求算法的时间复杂度为O(|A|+|B|+|C|)。其中,|A|为集合A的元素个数。

【要求】
用通俗,完善的语言描述下,最好给出算法,要保证正确哦

...全文
363 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Totem825 2009-03-01
  • 打赏
  • 举报
回复
把C接在B的后面
然后和A合并,求交,同时遍历A和C和B合成的集合
绿色夹克衫 2009-03-01
  • 打赏
  • 举报
回复
相当于BC同时和A作归并,A每向后挪1个,BC都要挪到比A大的位置,这样pb,pc相当于从一个比pa小的值,挪到了比pa大的值,
这个过程中,如果存在与pa相等的值,一定会路过,因此在pb,pc向后挪的过程中加入判断,就可以找到与A的交集了
  • 打赏
  • 举报
回复
三个链表已经是递增有序了,所以这个算法其实很容易就可以实现:

pa指向链表A的第一个节点;
pb指向链表B的第一个节点;
pc指向链表C的第一个节点;
while(pb!=NULL && pb!=NULL)
{
if(pb->data < pc->data)
pb指针后移;
else if(pb->data == pc->data) //该元素为B∩C中的元素
{
while(pa!=NULL && pa->data <= pb->data) //寻找在链表A中的插入位置
{
pa指针后移;
}
在pa指向的节点之前插入一个新元素,其值为pb->data;
pb指针后移;
pc指针后移;
}
else
pc指针后移;
}

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧