Patrice T
Мы не делаем вашу домашнюю работу.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей выполнять вашу работу, а для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание пройденных вами курсов, а также проблем, возникающих при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и начинайте работать. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.
Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это все равно что пытаться научиться водить машину, обучая кого-то другого.
Создание алгоритма-это в основном поиск математики и необходимая адаптация к вашей реальной задаче.
[Обновление]
Совет: правильно сделайте отступ в коде, отступ показывает структуру вашего кода и облегчает его чтение.
Node *insert(Node *Tree, void *Object, float (*Distance)(void *, void *))
{
if(Tree == NULL){
if((Tree=(Node *)malloc(sizeof(Node)))==NULL){
printf("Insufficient memory");
exit(1);
}
Tree->p1 = Object;
Tree->p2 = NULL;
Tree->left = Tree->right =NULL;
}
else if (Tree->p2 == NULL)
Tree->p2 = Object;
else if ((*Distance)(Tree->p1, Object) < (*Distance)(Tree->p2, Object))
insert(Tree->left, Object, Distance);
else insert(Tree->right, Object, Distance);
return(Tree);
}
Профессиональные редакторы программистов имеют эту функцию.
Notepad++ Home[
^]
UltraEdit | Оригинальный Текстовый Редактор[
^]
Совет: не упаковывайте больше кода, чем нужно, в 1 строку, это ничего не экономит и не быстрее, просто его труднее читать.
Node *insert(Node *Tree, void *Object, float (*Distance)(void *, void *))
{
if(Tree == NULL){
Tree=(Node *)malloc(sizeof(Node));
if((Tree == NULL){
printf("Insufficient memory");
exit(1);
}
Tree->p1 = Object;
Tree->p2 = NULL;
Tree->left = Tree->right =NULL;
}
else if (Tree->p2 == NULL)
Tree->p2 = Object;
else if ((*Distance)(Tree->p1, Object) < (*Distance)(Tree->p2, Object))
insert(Tree->left, Object, Distance);
else
insert(Tree->right, Object, Distance);
return(Tree);
}
Совет: не Изучайте программирование на языке Си. С языком си Вы несете ответственность за все детали, такие как управление памятью, границы массива, утечка памяти и так далее. Работа с этими деталями усложняет процесс обучения.
Используйте вместо этого реальный язык высокого уровня, такой как BASIC, Java или C#, они маршалируются и сообщают вам, когда что-то идет не так, как нужно, например, чтение после конца массива.