如何解决C ++中用于联合查找的自引用结构
以下是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 举报,一经查实,本站将立刻删除。