问题描述
以下是union-find的Java实现,我希望在C ++中复制同样的内容:
class v_rank{
int position,rank;
v_rank parent;
public v_rank(int position){
this.position = position;
rank = 0;
parent = null;
}
}
static v_rank find(v_rank v){
if(v.parent == null)
return v;
v.parent = find(v.parent);
return v.parent;
}
static void union(v_rank root1,v_rank root2){
if(root1.rank < root2.rank)
root1.parent = root2;
else if(root1.rank > root2.rank)
root2.parent = root1;
else{
root2.parent = root1;
root1.rank++;
}
}
我为C ++所做的尝试:
struct vert {
int pos,rank;
vert* par;
vert(int pos) {
this->pos = pos;
rank = 0;
par = NULL;
}
};
vert find(vert v) {
if (v.par == NULL)
return v;
*(v.par) = find(*(v.par));
return *(v.par);
}
与具有这种实现的Java不同,我无法将2 vert与简单的'=='进行比较。 我需要制作两个这样的顶点对,然后制作所有这样的顶点对(边)的向量。 我也有这个问题。
有人可以建议一种在cpp中复制Java代码的方法,这样我就可以检查两个“ verts”是否相等并使用成对的“ verts”向量吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)