Una posible implementación en C: