nick when i create does functions there is conflict because we are use a pointer with a reference
Code:
Point* DisjSets::findPathcompression( Point & a )
{
if( a.parent == NULL)
return &a;
else
return a.parent = findPathcompression(a.parent);
}
i still can get it to work correctly my union sets is wrong
my union set by size is
Code:
void DisjSets::unionSets( Point & a, Point & b )
{
int indexA = findPathcompression(a);
int indexB = findPathcompression(b);
if(s[indexA].value < s[indexB].value ||
s[indexA].value == s[indexB].value)
{
s[indexA].value += s[indexB].value;
s[b.index].value = s[indexA].index;
}
else
{
s[indexB].value += s[indexA].value;
s[a.index].value = s[indexB].index;
}
}
i made the path compression send an int out
Code:
int DisjSets::findPathcompression( Point & a )
{
if( a.value < 0 )
return a.index;
else
return s[a.index].value = findPathcompression(s[a.value]);
}
my = operator is correct
Code:
Point& Point::operator =(const Point & rhs)
{
rhs.value = index;
return *this;
}