qsort in struktur
-
Hi Leute,
Ich brauche Euere Hilfe,
Ich habe solche Strukturen :
typedef struct freq { long instr; long frequency; long pos; }; typedef struct lut { freq_t *tab; int clenght; long entries; long rest; long posComSize; list_t *init; list_t *pointer; list_t *pointer1; long *DeletArray; long pos; };
Ich möchte in der Struktur
lut* Tables
, alle Instruktionen nach ihren Positionen in
freq *tab
sortieren:
Das Problem ist, Ich muss so eine Schleife habe, da jeder Element des Arrays
lut *Tables
, den Array
freq *tab
mit Struktur
{instr, freqeuncy, pos}
besitzt.
for ( j =1; j <= count; j++){ qsort(Tables[j].tab, Tables[j].entries ,sizeof(lut_t),compare_pos); } } long compare_pos(const void*p1,const void*p2) { lut_t* i1=(lut_t*)p1; lut_t* i2=(lut_t*)p2; if (i1->pos > i2->pos) return 1; else if (i1->pos < i2->pos) return -1; }
Wie kann Ich den compare_pos so anpassen, dass er in jedem Element der
lut *Tables
, in den
freq *tab
jede Instruktoin nach Ihrer Position sortiert.
Im voraus Vielen Dank
lena
-
Wenn du die Instruktionen eines lut_t sortieren willst, mußt du auch ein Vergleichskriterium für freq_t's bereitstellen
int compare_freq(void* p1,void* p2) { freq_t* f1 = (freq_t*)p1; freq_t* f2 = (freq_t*)p2; return f2->pos - f1->pos; } for(i=0;i<tab_ct;++i) qsort(Tables[i].tab,Tables[i].entries,sizeof(freq_t),compare_freq);