#include "mtf.h"
/****privadas*****/
-int no_pertenece(char *z, char c);
+int no_pertenece(char *z, char c, int len);
void pop_front(char *z, int pos);
printf("\n");
}
+int comparar(const void *d1, const void *d2)
+{
+ char *c1, *c2;
+
+ c1 = (char *)d1;
+ c2 = (char *)d2;
+
+ return (*c1) - (*c2);
+}
int *jacu_mtf(char *datos, int len)
{
printf("Z original = ");
print_z(z, size);
printf("SIZE = %d\n", size);
- z[0]='A';z[1]='B';z[2]='C';z[3]='D';z[4]='R';
+ /*z[0]='A';z[1]='B';z[2]='C';z[3]='D';z[4]='R';*/
+ /* Ordeno */
+ qsort(z, size, 1, comparar);
+ printf("Z ordenado = ");
+ print_z(z, size);
+
for(i=0; i<len; i++){
pos[i] = get_pos(z, size, datos[i]);
printf("vino %c emiti: %d\n",datos[i], pos[i]);
char *z;
int i, j=0;
- z = (char*)malloc(1);
- if (z==NULL) return NULL;
+ z = NULL; /*(char*)malloc(1);*/
+ /*if (z==NULL) return NULL;*/
for(i=0; i<len; i++){
- if( no_pertenece(z, datos[i]) ){
- realloc(z, j*sizeof(char));
- z[j]=datos[i];
+ if( no_pertenece(z, datos[i], j) == -1 ){
j++;
+ z = realloc(z, j*sizeof(char));
+ z[j-1]=datos[i];
*size = j;
}
}
}
-int no_pertenece(char *z, char c)
+int no_pertenece(char *z, char c, int len)
{
int i;
- for(i=0; i<255; i++)
- if ( z[i] == c )
+ /* XXX Z NO TIENE 255 POSICIONES XXX */
+ for(i=0; i<len; i++)
+ if (z[i] == c)
return 0;
return -1;
}
int get_pos(char *z, int len, char c)
{
int pos;
+ if (z==NULL) return -1;
+
for(pos=0; pos<len; pos++)
if ( z[pos] == c )
return pos;