?? mfset.h
字號:
//MFSet.h
#include <iostream.h>
#include "ParentTree.h"
#define OK 1
#define YES 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -2
//------------劃分等價類對集合進行的幾個基本操作------
//--初試化----
void Initial(PTree &S){
cout<<"請輸入結點的個數(小于100)"<<endl;
cin>>S.n;
for(int i=1;i<=S.n;i++){
cout<<"請輸入結點的數據域: ";
cin>>S.nodes[i].data;
cout<<"請輸入結點 "<<S.nodes[i].data<<" 的雙親位置: ";
cin>>S.nodes[i].parent;
}//for
}//Initial
//--確定i(結點的序號)所在的子集,并將從i至根路徑上所有結點都變成根的孩子結點。
short fix_mfset(PTree &S,int i){
if(i<1||i>S.n) return -1;
for(int j=i;S.nodes[j].parent>0;j=S.nodes[j].parent);
int t;
for(int k=i;k!=j;k=t){
t=S.nodes[k].parent; S.nodes[k].parent=j;
}
return j;
}//fix_mfset
//---S.nodes[i]和S.nodes[j]分別是S的互不相交的兩個子集Si和Sj的根結點,求并集。---
short mix_mfset(PTree &S,int i,int j){
if(i<1||i>S.n||j<1||j>S.n) return ERROR;
if(S.nodes[i].parent>S.nodes[j].parent){
S.nodes[j].parent+=S.nodes[i].parent;
S.nodes[i].parent=j;
}//if
else{
S.nodes[i].parent+=S.nodes[j].parent;
S.nodes[j].parent=i;
}//else
return OK;
}//mix_mfset
//---遍歷----
void traverse(PTree S){
for(int i=1;i<=S.n;i++){
cout<<S.nodes[i].data<<'\t';
cout<<S.nodes[i].parent<<endl;
}//for
}//traverse
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -