主题:[原创]请各位好心的同胞们帮个忙啊!(C语言实现集合的表示与操作算法)
C语言实现集合的表示与操作算法设计
参考;[参考数据类型或变量]
typedef ElemType int /* 实型或任意其它元素类型 */
typedef struct {
ElemType elem;
int tag; /* 根节点为负的整数,表示该集合的基数的负值,否则为父节点索引指针 */
}NODE;
NODE *set; /* 用动态存储分配实现集合的树表示与存储 */
[参考子程序接口与功能描述]
void InitSet(NODE *set)
功能: 根据集合的基数动态分配存储, 输入各元素, 初始化子集森林.
int Find(NODE *set, ElemType elem)
功能: 在数组set中顺序查找元素elem,如果不成功, 返回-1; 否则,使用带压缩规则的查找算法,返回所在子集的根节点索引.
int Union(NODE *set, ElemType elem1, ElemType elem2)
功能: 应用Find算法首先找到elem1和elem2所在的子集, 然后应用带加权规则的并运算算法合并两个子集. 不成功时, 返回-1; 否则, 返回并集的根节点索引.
希望各位高手能帮忙!!!小弟感激不尽。[em7][em1][em2][em2][em1][em2]
参考;[参考数据类型或变量]
typedef ElemType int /* 实型或任意其它元素类型 */
typedef struct {
ElemType elem;
int tag; /* 根节点为负的整数,表示该集合的基数的负值,否则为父节点索引指针 */
}NODE;
NODE *set; /* 用动态存储分配实现集合的树表示与存储 */
[参考子程序接口与功能描述]
void InitSet(NODE *set)
功能: 根据集合的基数动态分配存储, 输入各元素, 初始化子集森林.
int Find(NODE *set, ElemType elem)
功能: 在数组set中顺序查找元素elem,如果不成功, 返回-1; 否则,使用带压缩规则的查找算法,返回所在子集的根节点索引.
int Union(NODE *set, ElemType elem1, ElemType elem2)
功能: 应用Find算法首先找到elem1和elem2所在的子集, 然后应用带加权规则的并运算算法合并两个子集. 不成功时, 返回-1; 否则, 返回并集的根节点索引.
希望各位高手能帮忙!!!小弟感激不尽。[em7][em1][em2][em2][em1][em2]