node1->rchild = node2->rchild;
}
-int shuff_compnode(SHUFFNODE *node1, SHUFFNODE *node2)
+int shuff_compnode(const void *node1, const void *node2)
{
- if (node1->freq < node2->freq) return 1;
- if (node1->freq > node2->freq) return -1;
+ if (((SHUFFNODE*)node1)->freq < ((SHUFFNODE*)node2)->freq) return 1;
+ if (((SHUFFNODE*)node1)->freq > ((SHUFFNODE*)node2)->freq) return -1;
return 0;
}
SHUFFNODE *lastsymbol = list+(listcount-1);
SHUFFNODE *node1,*node2;
- /* Ordenamos inicialmente la inputlist para tomar las dos freqs min */
while (lastsymbol > list) {
/* Ordeno la lista por frecuencia descendente */
qsort(list,listcount,sizeof(SHUFFNODE),shuff_compnode);
/* Encodeo byte per byte */
shuff_encode_symbols(freqtable,codetable,inputfile,outputfile);
+ /* Free up memory baby yeah */
+ free(freqtable);
+ free(inputlist);
+ free(codetable);
+
return 1;
}
fclose(fpsource);
fclose(fpdest);
+ /* Free up memory baby yeah */
+ free(ftable);
+ free(inputlist);
+
return 1;
}