Files

39 lines
1.0 KiB
C
Raw Permalink Normal View History

2026-08-10 01:21:15 +08:00
#ifndef INCLUDED_C_QUICKFINDUF_H
#define INCLUDED_C_QUICKFINDUF_H
#ifndef INCLUDED_C_BASE_H
#include <c_Base.h>
#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*/