(NODE n) { n->parent = n; } int find(NODE n, NODE ds) { if (n->parent == n) { ds->data = n->data; ds->flag = 1; ds->parent = n->parent; } if (n->parent != n) find(n->parent, ds); } int merge(NODE da, NODE db) { if (da->flag) db->parent = da; else da->parent = db; } int comp(const void *ea, const void *eb) { if ((*(edge **)ea)->w > (*(edge **)eb)->w) return 1; else if ((*(edge **)ea)->w == (*(edge **)eb)->w ) return 0; else return -1; }
在实现这个算法的时候,真正体会到了测试的重要性。程序能成功编译只是完成了一小部分,必须经过反复的测试才能发布。
|