Du musst immer ein int zurückgeben, das tust du bei emptyqueue() nicht.
code:
1:
2:
3:
4:
5:
6:
unsigned int findMin(queue* q) {
if (head(q) == NULL) return -1;
unsigned int current = head(q);
unsigned int restMin = findMin(rest(q));
return min(current, restMin);
}
Der Code wird ziemlich sicher nicht compilierbar sein, sollte dir aber trotzdem einen Absatz geben, wie du die Aufgabe lösen kannst: Berechne das Minimum des Rests und vergleiche mit dem aktuellen Wert.
Wenn es keinen Rest mehr gibt, wird der größte mögliche Wert zurückgegeben. (-1 als unsigned gibt einen Überlauf, weshalb -1 der größtmögliche Wert ist).
Aber head(q) ist nur ein Wert von vielen. Woher nimmst du die Gewissheit, dass gerade dort das Minimum steht und nicht in den Werten danach? Den Rest werte ich per rekursivem Aufruf aus, um ihn dann mit head(q) zu vergleichen. Irgendwo musst du da das Minimum aus beidem berechnen.