标签:tty 存储 nio nbsp 并运算 maxsize 另一个 info 长度
并查集问题中集合存储如何实现?
>>可以用树结构表示集合,树的每个结点代表一个集合元素
数组中每个元素的类型描述为:
typedef struct { ElementType Data; int Parent; }SetType;
(1)查找某个元素所在的集合(用根结点表示)
int Find(SetType S[], ElementType X) { /* 在数组S中查找值为X的元素所属的集合 */ /* MaxSize是全局变量,为数组S的最大长度 */ int i; for(i=0;i<MaxSize&&S[i].Data!=X;i++) ; if(i>=MaxSize) return -1; /* 未找到X,返回-1 */ for(;S[i].Parent>=0;i=S[i].Parent) ; return i; /* 找到X所属集合,返回树根结点在数组S中的下标 */ }
(2)集合的并运算
void Union(SetType S[], ElementType X1, ElementType X2) { int Root1, Root2; Root1 = Find(S, X1); Root2 = Find(S, X2); if(Root1 != Root2) S[Root2].Parent = Root1; }
小的集合合并到大的集合中,根结点的parent用负号加数字(总共的大小)表示
标签:tty 存储 nio nbsp 并运算 maxsize 另一个 info 长度
原文地址:https://www.cnblogs.com/ch122633/p/8847637.html