structuren sortieren
-
hallo
ich habe ein problem bei dem sortieren eines structs.
mein struct (siehe unten) hat die var "data". dort werden daten drinne stehen.
nun soll sortiert werden! die ID 0 soll das struct bekommen, welches das kleinste data enthält, ID 1 soll das nächst größere werden,... einbezugen sollen nur die structuren werden, in denen "aktivity" auf true steht. es werden nur acht structuren (also ID 0 ... ID 7) erzeugt.kann mir dabei jemand helfen? ich zerbreche mir schon seit stunden den kopf.
typedef unsigned char byte; typedef struct kapsel { byte ID; byte port; byte data; bool aktivity; struct Dimmer *next, *prev; }kapsel;
kleine anmerkung:
das ganze wird für einen mikrocotroller geschrieben, daher habe ich auch nicht alle funktionen der stdauch ist dieser mit nur 8MHz getacktet und hat "nur" 2kB ram
vielen dank im voraus
tüddel
-
Ich würde, wenn ich ein neues Element hinzufüge (einem Array denke ich mal), erstmal qsort benutzen, dafür dann eine Vergleichsfunktion programmieren, die die Größe von data checkt und entsprechend vergleicht und sortiert. Dann würde ich einfach eine Schleife machen:
for(i = 0; i < maxentries; i++)
array[i].id = i;dann kannst du einfach, weil das Array schon per Größe sortiert ist, einfach die ID zuweisen. So würde ich das jetzt zumindest machen.
-
da es sich scheinbar um ne verkettete liste handelt, würde ich empfehlen, die daten dort bereits sortiert einzufügen und wenn alle daten drin sind einfach die id's setzen.. sortiert einfügen is ja nicht so schwer...
-
eine handmade gemachter vergleich duerfte hier (da ja nur 8 elemente) deutlich effizienter sein, als dafuer ein sortieralgorithmus zu verwenden.