Problem mit einer Funktion
-
Hallo,
ich will eine Fkt schreiben mit folgendem Funktionskopf:
void sort(struct dlist *head, int (*comp)(void*, void*));
Ich hab die Funktion fast geschrieben, aber weiss nicht 2 Sachen:
- Wie kann ich spater mit parameter die Funktion aufrufen.
- Wie kann ich diese Funktion int comp() in der funkction sort() einwenden
Die Funktion sort():
void sort(struct dlist *head, int (*comp)(void*, void*)) { int i, ok; struct dlist *tmp; tmp = head; do { ok = 1; for(i=0;i<count;i++) { if(...) { // Hier muss die Funktion comp(tmp->data,tmp->next->data) > 0 stehen swap(tmp->data,tmp->next->data); ok=0; } tmp=tmp->next; } } } while(!ok); }
Aufruf von sort() in der main-Methode:
ich hab es mit sort(anfang, comp(anfang->data, anfang->next->data));
probiert, aber kommt ein Warrning, dass der 2. Argument von "sort" macht pointer von integer ohne cast.Hilfe ....
-
- Du mußt dort einen Funktionszeiger übergeben:
int compare(void* l,void* r) { //vergleiche *l und *r } ... sort(anfang,compare);
- In der Funktion sort() kannst du den übergebenen Parameter so nutzen, als ob er eine Funktion wäre:
void sort(dlist* head,int(*comp)(void*,void*)) { ... //Vergleich zweier Elemente: if(comp(pos1->data,pos2->data))... ... }