Files
2026-08-10 01:21:15 +08:00

33 lines
1.2 KiB
C

#ifndef INCLUDED_C_MINHEAP_H
#define INCLUDED_C_MINHEAP_H
#ifndef INCLUDED_C_BASE_H
#include <c_Base.h>
#endif /*INCLUDED_C_BASE_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
typedef int (*c_MinHeap_Compare_f)(const void* a, const void* b);
// 最小堆控制結構體
typedef struct {
void* array; // 連續記憶體陣列,以平鋪樹(Array-based Tree)方式儲存節點
int obj_size; // 每個單個元素的位元組大小
c_size_t capacity; // 當前緩衝區可容納的最大元素量
c_size_t size; // 目前堆中已儲存的元素數量
c_MinHeap_Compare_f compare; // 使用者定義的優先級比較函數
} c_MinHeap_t;
c_err_t c_MinHeap_Init(c_MinHeap_t* self, int obj_size, c_size_t initial_capacity, c_MinHeap_Compare_f compare);
void c_MinHeap_Destroy(c_MinHeap_t* self);
c_err_t c_MinHeap_Push(c_MinHeap_t* self, const void* obj);
c_err_t c_MinHeap_Pop(c_MinHeap_t* self, void* out_obj);
void* c_MinHeap_Peek(c_MinHeap_t* self);
c_size_t c_MinHeap_GetSize(const c_MinHeap_t* self);
c_bool_t c_MinHeap_IsEmpty(const c_MinHeap_t* self);
#endif /*INCLUDED_C_MINHEAP_H*/