Separate names with a comma.
Для этого надо реализовать два метода: 1) list* find_max(list* start) { list* max_node = start; list* current = start->next;...
Ну а что тут искать? list* current = start; while (current != NULL && current->key != search_key) { current = current->next; } return...
Плохой вариант, распределение совсем неравномерное получится. Лучше что-то вроде rand() | (rand() << log2(RAND_MAX))