#ifndef INCLUDED_C_QUICKFINDUF_H #define INCLUDED_C_QUICKFINDUF_H #ifndef INCLUDED_C_BASE_H #include #endif /*INCLUDED_C_BASE_H*/ /* ------------------------------------------------------------------------------------------------------------------ */ /* */ typedef struct { c_size_t* id; c_size_t id_len; c_size_t count; }c_QuickFindUF_t; /* ------------------------------------------------------------------------------------------------------------------ */ /* */ c_err_t c_QuickFindUF_Init(c_QuickFindUF_t* self, c_size_t count); void c_QuickFindUF_Destroy(c_QuickFindUF_t* self); c_size_t c_QuickFindUF_Find(c_QuickFindUF_t* self, c_size_t index); c_err_t c_QuickFindUF_Union(c_QuickFindUF_t* self, c_size_t p, c_size_t q); C_STATIC_FORCE_INLINE c_bool_t c_QuickFindUF_IsConnected(c_QuickFindUF_t* self, c_size_t p, c_size_t q) { if (!self || !self->id || p>=self->id_len || q>=self->id_len) return C_FALSE; return self->id[q] == self->id[p]; } #endif /*INCLUDED_C_QUICKFINDUF_H*/