Operandos no válidos para binarios en mi función ‘NumberSize’

He creado una función que se supone que toma los números de mi lista vinculada y determina cuál es el número más pequeño y cuál es el número más grande. Creé un bucle while que se supone que toma cada número y lo compara con el siguiente. ‘newNumber’ es el número actual y ‘next’ debe ser el siguiente en la lista. Tengo problemas para entender cómo llamar al número actual y al siguiente. Mi bucle while también es infinito, porque me refiero a los números nuevamente en determinar?

double NumberSize(NewNumber *start){ NewNumber *determine = start; double SecondNumber =0; double FirstNumber = 0; while(determine != NULL){ FirstNumber = determine->newNum; SecondNumber = determine->next; if(FirstNumber < SecondNumber){ printf("The biggest number is:\n", SecondNumber); }else{ printf("The smallest number is:\n", FirstNumber); } } 

Se te olvidó pasar por la lista. Utilizando una de las soluciones para el promedio:

 void NumberSize(NewNumber * start) { double num = 0.0; double biggest; double smallest; int flag = 0; NewNumber *temp = start; // set start values if(tmp != NULL){ biggest = temp->newNum; smallest = temp->newNum; tmp = tmp->next; flag = 1; } // while temp is not NULL while (temp) { // get number from current node num = temp->newNum; // if that number is bigger than "biggest" if (num > biggest) { // exchange "biggest" with "num" biggest = num; } // do it the same way for the smallest number else if (num < smallest) { smallest = num; } // here is the forgotten line: // go to the next node temp = temp->next; } if(flag){ // no returns, just printing printf("The smallest number is: \n", smallest); printf("The biggest number is: \n", biggest); } else { puts("list empty"); } }