#function #pointers #compare #structure
#функция #указатели #Сравнить #структура
Вопрос:
Я хочу удалить элемент связанного списка, и для этого мне нужно сравнить элементы с тем, который указан в заголовке, но значение является структурой, и я не могу сравнить 2 структуры. Итак, я думаю, мне нужно получить указатель на эту структуру и сравнить эти два. Как это делается? Это своего рода функция:
void delete_element(NodList* head, Structure value){
NodList* moving;
while (moving->next != NULL amp;amp; moving->val != value){
left_behind = moving;
moving = moving->next;
}
// в остальном я удаляю, если оно соответствует, и перемещаю указатели
Комментарии:
1. Я не проверял остальную часть вашего кода на правильность, но если цель состоит в том, чтобы удалить элемент из списка, заданного ссылочным элементом (‘value’ в вашем коде), вам нужно решить, что означает равенство двух элементов. Для того, что вы опубликовали, похоже, вам нужно будет соответствующим образом реализовать один или несколько перегруженных операторов для
Structure
типа (где то, что подходит, зависит отStructure
типа).2. Я добавлю, что даже если вы преобразуете тело своей функции для выполнения сравнения указателей, оно никогда не будет равно, потому что аргумент ‘value’ — это новый временный объект, который существует только для этого конкретного вызова функции. Существуют и другие сценарии, в которых сравнение указателей может работать.