集合的定义与并查操作(C语言)
生活随笔
收集整理的這篇文章主要介紹了
集合的定义与并查操作(C语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
#define MAXN 1000 /* 集合最大元素個數 */ typedef int ElementType; /* 默認元素可以用非負整數表示 */ typedef int SetName; /* 默認用根結點的下標作為集合名稱 */ typedef ElementType SetType[MAXN]; /* 假設集合元素下標從0開始 */void Union( SetType S, SetName Root1, SetName Root2 ) { /* 這里默認Root1和Root2是不同集合的根結點 *//* 保證小集合并入大集合 */if ( S[Root2] < S[Root1] ) { /* 如果集合2比較大 */S[Root2] += S[Root1]; /* 集合1并入集合2 */S[Root1] = Root2;}else { /* 如果集合1比較大 */S[Root1] += S[Root2]; /* 集合2并入集合1 */S[Root2] = Root1;} }SetName Find( SetType S, ElementType X ) { /* 默認集合元素全部初始化為-1 */if ( S[X] < 0 ) /* 找到集合的根 */return X;elsereturn S[X] = Find( S, S[X] ); /* 路徑壓縮 */ }總結
以上是生活随笔為你收集整理的集合的定义与并查操作(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 何小鹏称完全无人驾驶还看不到完整逻辑 或
- 下一篇: 《英雄联盟》新英雄“彗”13.24 版本