#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 *jacu_buscar_z(char* datos, int len, int *size)
{
char *z;
- int i, j=1;
+ 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]) ){
+ if( no_pertenece(z, datos[i], j) == -1 ){
j++;
z = realloc(z, j*sizeof(char));
z[j-1]=datos[i];
}
-int no_pertenece(char *z, char c)
+int no_pertenece(char *z, char c, int len)
{
int i;
/* XXX Z NO TIENE 255 POSICIONES XXX */
- for(i=0; i<255; i++)
+ 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;