开始设计
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
#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*/
|
||||
Reference in New Issue
Block a user