Следуя этому предыдущему вопросу о Void * on double linked lists Теперь я задаюсь вопросом, как реализовать функцию поиска, которая обрабатывает этот тип связанного списка. я сделал несколько шагов вперед с этим и я немного запутался .. базовая идея заключается в следующемНайти функцию по двойному связанному списку с void *
void find(list_el *el, linked_list *l_ptr)
{
list_el *p = l_ptr->head;
while(p != NULL)
{
if ((l_ptr->data_compare_func(el->data,p->data)) == 0) /* 0 means exact match*/
{
printf("Found\n");
}
p = p->next;
}
}
как теперь написано неправильно, но я не могу сделать лучше, чем это, потому что я не имеют четкое представление о том, как это работает. Я бы хотел сделать его динамичным, и у меня нет идей о том, как лучше обрабатывать параметр el ... Должен ли я объявить его как list_el или я должен объявить его как void *? проблема может заключаться в том, что если я объявляю ее как list_el каждый раз, когда мне приходится называть find, я должен создать новый list_el, заполнить его и передать его методу find. я думаю, что это нехороший способ ... для решения «void *» я не знаю, изменит ли он что-то, возможно, это будет еще хуже ... поскольку вы можете вывести из моих промахов очень смущенно любая помощь будет полезной ..
Благодаря
Почему функция «неправильная»? Какое поведение вы ожидаете, и что вы получаете? –