不相交資料結構

2021-07-05 01:37:30 字數 1154 閱讀 8091

摘要:

(1)不相交資料結構是一種非常有用的資料結構,它類似於一種集合,高效的支援某兩個元素是否在同乙個元素中的查詢操作,也支援合併兩個集合,在集合中刪除某個元素等操作.

基本資料結構:不相交資料結構常用的一種形式是由樹的構成的.樹被儲存在乙個陣列中(非顯式的儲存).集合的名字由樹的根給出.假如該陣列元素的值大於0,那麼它不是根,否則它就是根(大小的負值由該陣列元素的值)是否進行路徑壓縮是一件很重要的事,所謂路徑壓縮就是指在查詢某個元素時,將它路徑上的所有點的值都記錄為所在集合的根.

#include "stdafx.h"

#include "malloc.h"

#define numelements 9

typedef int disjset[numelements+1];

typedef struct record *stack;

struct record

;

基本操作結構,查詢與合併

int find(disjset s,int x)//查詢元素x所在的集合

void union_size(disjset s,int root1,int root2)

else

}

【3】按高度合併:

void union_height(disjset s,stack record,int root1,int root2)

else

}

廢除最後一次的union操作;

使用乙個棧記錄最近傳送的union操作與相應的集合.方便進行刪除.

void

inistack(stack

s,int size)

void

pop(stack

s ,int & oldheight1, int&oldheight2, int &root1, int &root2 )

void

push(stack

s,int height1,int height2,int root1,int root2)

void

deunion(disjset

s, stack record)

資料結構 不相交集ADT

若對於每一對元素 a,b a b屬於s,arb或者為true或者為false,則稱在集合s上定義關係r。如果arb是true,那麼我們說a與b有關係。等價關係是滿足下列三個性質的關係r 自反性 對於所有的a屬於s,ara 對稱性 arb當且僅當bra 傳遞性 若arb且brc,則arc 乙個元素a屬...

不相交集資料結構

用乙個1x3的陣列來儲存每個數的數 其父親 秩。首先尋找合併的兩個樹的根的根,然後按照秩的大小將兩個樹進行合併。尋找兩個數的根時,順便壓縮其與根的距離 include define max 100 int find int a 3 int n void rootunion int a 3 int m...

《資料結構與演算法分析》不相交集

前言 回來到學校,今天又要開始苦逼的工作了,後悔回家玩去了,現在想學習時間又不夠了。就是這麼傻 我的github 不相交集 思想 不相交集是解決等價問題的一種有效的資料結構,之所以稱之為有效是因為,這個資料結構簡單 幾行 乙個簡單陣列就可以搞定 快速 每個操作基本上可以在常數平均時間內搞定 首先我們...