]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/mtf/mtf.c
copio el z para que no se tenga que procesar todo el choclo de nuevo
[z.facultad/75.06/jacu.git] / src / mtf / mtf.c
index 3967cbc96a48000ee3becc897ec94d08533fc467..bdb423c7b9d365776db5d6fad291666ade33675a 100644 (file)
@@ -16,7 +16,7 @@ void print_z(char *z, int len)
        fprintf(stderr, "\n");
 }
 
-char *jacu_mtf(char *datos, int len)
+char *jacu_mtf(char *datos, int len, char **_z, int *z_len)
 {
        char *z;
        char *pos;
@@ -24,11 +24,14 @@ char *jacu_mtf(char *datos, int len)
        
        pos = (char *)malloc(len*sizeof(char));
        z = jacu_buscar_z(datos, len, &size);
+       *_z = (char*)malloc(len*sizeof(char));
+       memcpy(*_z, z, len*sizeof(char));
        for(i=0; i<len; i++){
                pos[i] = get_pos(z, size, datos[i]);
                if (pos[i] != 0) 
-                       pop_front(z,pos[i]);
+                       pop_front(z, pos[i]);
        }
+       (*z_len) = size;
        return pos;
 }
 
@@ -40,7 +43,7 @@ char *jacu_mtf_inv(char *z, char *pos, int len)
        datos = (char*)malloc(sizeof(char)*len);
        for(i=0; i<len; i++){
                datos[i] = z[(size_t)pos[i]];
-               pop_front(z,pos[i]);
+               pop_front(z, pos[i]);
        }
        return datos;
 }