From: Ricardo Markiewicz Date: Sun, 20 Jun 2004 01:02:34 +0000 (+0000) Subject: Fucking olvidada :-D X-Git-Tag: svn_import~142 X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/commitdiff_plain/528c508ae8d554dc04840ef894b6a264d45a14c7 Fucking olvidada :-D --- diff --git a/otros/blocksorting/bs.h b/otros/blocksorting/bs.h new file mode 100644 index 0000000..b2742c4 --- /dev/null +++ b/otros/blocksorting/bs.h @@ -0,0 +1,53 @@ + +#ifndef _BS_H_ +#define _BS_H_ + +#include +#include +#include + +typedef struct _bs_data_t_ { + unsigned long int pos_inicial; + unsigned long int pos_final; + unsigned long int pos_orden; + char ord; /* indica si esta ordenada */ +} t_BlockSortData; + +typedef struct _bs_t_ { + t_BlockSortData *array; + unsigned long int *ord; + unsigned long int len; +} t_BlockSort; + +/** Inicializa un BlockSorting + * + * \param len Tamaño de página a utilizar + */ +t_BlockSort *bs_create(unsigned long int len); + +/** Libera un BlockSorting + * + * \param bs BlockSorting previamente inicializado. + */ +void bs_destroy(t_BlockSort *bs); + +/** Resuelve un BlockSorting + * + * \param in Array de bytes que se pretende procesar. + * \param out Array donde guardar la columna resultante. + * \param k Puntero donde guardar la posicion del array original. + * \oaram leido Tamaño de in (por si el tamaño de in es menor al de la pagina). + */ +void bs_solve(char *in, char *out, t_BlockSort *bs, unsigned long int *k, unsigned int leido); + +/** Obtiene el array original a partir de dst y k + * + * \param dst Array donde guardar el array original + * \param c Array generado opr bs_solve. + * \param k Valor retornado por bs_solve. + * \param len Tamaño de c + */ +void bs_restore(char *dst, char *c, unsigned long int k, unsigned long int len); + +#endif +