这是我试图解决的家庭作业问题,只需要有人看看并告诉我我做对了还是磨损了..
动态集合运算 UNION 以两个不相交的集合 S1 和 S2 作为输入,它返回一个由 S1 和 S2 的所有元素组成的集合 S = S1 U S2。集合 S1 和 S2 通常被操作破坏。展示如何使用合适的列表数据结构在 O(1) 时间内支持 UNION
我正在考虑有两个可以在恒定时间内完成的链接列表,但为此我们需要记住指向列表的第一个(头)和最后一个(尾)元素的指针。结构节点{字符*字;结构节点*下一个;} 结构集{ 结构节点* 头;结构节点*尾;对于每个带有头指针的列表,我们还将保留一个尾指针。支持 O(1) 时间内的联合操作:假设我们有两个集合 S1 和 S2。
PSEUDO-CODE:
node* Union(Set S1,Set S2){
S1.tail->next = S2.head;
S1.tail = S2.tail;
Remove S2 from the list of sets;
return S1;
}
我的方法是否朝着正确的方向发展?