/* sliding_window_min.h */ #ifndef SLIDING_WINDOW_MIN_H #define SLIDING_WINDOW_MIN_H #include /* для size_t */ #ifdef __cplusplus extern "C" { #endif typedef struct SlidingWindowMin SlidingWindowMin; /** * Создаёт новую структуру скользящего минимума. * @param window_size размер окна (должен быть > 0) * @return указатель на структуру или NULL при ошибке выделения памяти */ SlidingWindowMin* swm_create(int window_size); /** * Уничтожает структуру и освобождает всю динамически выделенную память. */ void swm_destroy(SlidingWindowMin* swm); /** * Добавляет новое значение в окно. * После вызова swm_get_min() сразу вернёт минимум последних min(window_size, добавленных) значений. */ void swm_add(SlidingWindowMin* swm, int val); /** * Возвращает текущий минимум в окне. * Если окно пустое — возвращает INT_MAX. */ int swm_get_min(const SlidingWindowMin* swm); #ifdef __cplusplus } #endif #endif /* SLIDING_WINDOW_MIN_H */