🐛 MFSet:修复合并相同子集的BUG

This commit is contained in:
康建伟
2020-02-12 02:12:35 +08:00
parent 0561659984
commit decad4ad29
5 changed files with 50 additions and 2 deletions

View File

@@ -80,6 +80,14 @@ Status merge_mfset(MFSet* S, int i, int j) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
S->nodes[i].parent = j;
return OK;
@@ -122,6 +130,14 @@ Status mix_mfset(MFSet* S, int i, int j) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
// Si所含成员数比sj少根结点的parent域是负数所以元素少的其值反而大
if(S->nodes[i].parent > S->nodes[j].parent) {
S->nodes[j].parent += S->nodes[i].parent;

View File

@@ -79,7 +79,15 @@ Status merge_mfset(MFSet* S, int i, int j) {
if(i < 1 || i > S->n || j < 1 || j > S->n) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
S->nodes[i].parent = j;
return OK;
@@ -121,7 +129,15 @@ Status mix_mfset(MFSet* S, int i, int j) {
if(i < 1 || i > S->n || j < 1 || j > S->n) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
// Si所含成员数比sj少根结点的parent域是负数所以元素少的其值反而大
if(S->nodes[i].parent > S->nodes[j].parent) {
S->nodes[j].parent += S->nodes[i].parent;

View File

@@ -80,6 +80,14 @@ Status merge_mfset(MFSet* S, int i, int j) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
S->nodes[i].parent = j;
return OK;
@@ -122,6 +130,14 @@ Status mix_mfset(MFSet* S, int i, int j) {
return ERROR;
}
/*
* 相同的子集无需合并,直接返回
* 注:教材中没有此步,需要修正
*/
if(i == j) {
return OK;
}
// Si所含成员数比sj少根结点的parent域是负数所以元素少的其值反而大
if(S->nodes[i].parent > S->nodes[j].parent) {
S->nodes[j].parent += S->nodes[i].parent;

Binary file not shown.

Binary file not shown.