c++集合。
#include <iostream> #include <iomanip> using namespace std; #define SIZE 10 #define NULL_DATA -1 class Node { public: Node(int x=SIZE) { data = new int[x]; for(int i=0;i<x;i++) { data[i] = NULL_DATA; } } void Union(int root1,int root2) { int x=Find(root1); int y=Find(root2); if(x!=y) { if(data[x]<data[y]) { data[x]+=data[y]; data[y]=x; } else { data[y]+=data[x]; data[x]=y; } } } int Find(int x) { while(data[x]>0) x=data[x]; return x; } void view() { for(int i=0;i<SIZE;i++) { cout<<setw(4)<<data[i]; } cout<<endl; for(int j=0;j<SIZE;j++) { cout<<setw(4)<<j; } cout<<endl; } private: int *data; }; int main() { Node node; node.Union(1,2); node.Union(2,3); node.Union(4,3); node.Union(4,5); node.Union(6,7); node.Union(7,9); node.Union(9,10); node.view(); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。