- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.树与等价问题.doc
6.5树与等价问题
下图中,等价关系的一个有序对为(6,8),则s1和s2需要合并。
//----------树的双亲表存储表示-----------
#define MAX_TREE_SIZE 100
Typedef struct PTNode {
TElemType data;
Int parent; //双亲位置域。
}PTNode;
Typedef struct {
PTNode nodes[MAX_TREE_SIZE];
int n; //结点数。
}PTree;
//-------ADT MFSet的树的双亲表存储表示-----
typedef PTree MFSet;
int find_mfset(MFSet S,int i)
//找集合S中i所在子集的根。
{
if(i1 || iS.n) return -1; //i不属S中任一子集。
for(j=i;S.nodes[j].parent0;j=S.nodes[j].parent);
return j;
}// find_mfset
Status merge_mfset(MFSet S,int i,int j)
//S.nodes[i]和S.nodes[j]分别为S的互不相交的两个子集Si和Sj的根结点。
//求并集Si∪Sj.
{
if(i1 || iS.n || j1 || jS.n) reurn ERROR;
S.nodes[i].parent=j;
return OK;
}//merge_mfset
//为解决下图并操作结果树过深,修改并函数。
//修改存储结构:根节点的parent域存储子集中所含成员数目的负值。
void mix_mfset(MFSet S,int i,int j)
//S.nodes[i]和S.nodes[j]分别为S的互不相交的两个子集Si和Sj的根结点。
//求并集Si∪Sj.
{
if(i1 || iS.n || j1 || jS.n)
return ERROR;
if(S.nodes[i].parentS.nodes[j].parent)
{
//Si所含成员数比Sj少。
S.nodes[j].parent+=S.nodes[i].parent;
S.nodes[i].parent=j;
}//if(S.nodes[i].parentS.nodes[j].parent)
else
{
S.nodes[i].parent+=S.nodes[j].parent;
S.nodes[j].parent=i;
}// else_if(S.nodes[i].parentS.nodes[j].parent)
return OK;
}// mix_mfset
例6-1:假设集合S={x|1≤x≤n是正整数},R是S上的一个等价关系。
R={(1,2),(3,4),(5,6),(7,8),(1,3),(5,7),(1,5),...}
现求S的等价类。
//修改find_mfset函数,查找同时压缩路径。
int fix_mfset(MFSet S,int i)
//确定i所在子集,并将从i至根路径上所有节点都变成根的孩子节点。
{
if(i1 ||iS.n) return -1; //i不是S中任一子集的成员。
for(j=i;S.nodes[j].parent0;j=S.nodes[j].parent);
for(k=i;k!=j;k=t)
{
t=S.nodes[k].parent;S.nodes[k].parent=j;
}
return j;
}// fix_mfset
-------end-----
s1∪s2∪s3
2
3
s1∪s2
1
s1∪s2...∪sn
1
2
1
Sn
n
...
S1
S3
S2
6
9
3
S3=s1∪s2
8
10
1
S2
2
10
9
3
1
8
2
S1
6
2
1
3
n-1
n
. . .
. . .
n个集合
“并”操作
n
...
9
8
7
6
4
3
9
8
7
6
5
3
5
2
1
4
...
n
2
1
a压缩路径之前
b压缩路径之后
R的下一个有序对为(8,9),执行fix_mfset(s,8)前后对比
S.nodes
MIX(S,5,6)
-1
-1
7
-2
5
-2
MIX(S,1,2)
MIX(S,3,4)
3
-1
…
-1
-1
-1
-1
-1
-1
-1
-1
-1
9
8
7
6
5
4
3
2
1
MIX(S,7,8)
-2
1
n
9
8
7
6
5
4
3
2
MIX(S,1,3)
MIX(S,5,7)
n
…
S.n
您可能关注的文档
最近下载
- 餐饮值班管理课程培训.pptx
- 尔雅《批判与创意思考》课后习题+期末试题.docx VIP
- 6-4正奇租赁二期资产支持专项计划现金流预测分析报告1213日.pdf
- 算法设计与分析(北航)中国大学MOOC慕课 章节测验期末考试客观题答案.docx
- 2024年山东省济宁市中考化学试卷(附答案).docx VIP
- T IAC CAMRA 50-2024 《事故汽车常用零部件修复与更换判别规范》(2).pdf
- 北师大版数学八年级下册第六章 平行四边形 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一致性).docx
- 长江经济带港口发展研究(2011~).docx VIP
- 染色技术 8.1 涤纶结构特点和分散染料分类 8.1 涤纶结构特点、分散染料分类.pptx
- 人教版三年级下册必读书目《中国古代寓言故事》 .pdf
文档评论(0)