Функция удаления элемента структуры - C (СИ) (78752)
Формулировка задачи:
Здравствуйте, не могли бы подсказать, где я ошибся?( функция никак не хочет удалять элемент структуры, в поле которого содержится nlogin. root-указатель на начальный элемент стурктуры
void del_user (struct el_user* root, int nlogin)
{
struct el_user* r2;
struct el_user* r3=root;
while(root)
{
r2 = root;
if ( (r2->login) == nlogin)
{
free (r2);
root=r3;
break;
};
if ((root->next) == 0) //эта проверка работает
{
printf ("No user with such login exists. Check login.\n");
root=r3;
break;
};
root = root->next;
}
up, оч надо плиииз
Решение задачи: «Функция удаления элемента структуры»
textual
Листинг программы
int main()
{
el_user *root;
// создать цепочку
// ...
// ...
// удалить пользователя
del_user( &root, 12345 );
return 0;
}
Объяснение кода листинга программы
В данном коде выполняется удаление элемента из структуры данных, представляющей собой связный список (или граф), где каждый узел (или вершина) содержит информацию о пользователе.
Код создает указатель root на первый элемент списка (или графа). Затем он вызывает функцию del_user, которая принимает два аргумента: указатель на первый элемент списка и идентификатор пользователя, которого необходимо удалить.
Функция del_user работает следующим образом:
- Она получает указатель
rootна первый элемент списка. - Затем она получает идентификатор пользователя, которого необходимо удалить.
- Функция проходит по списку, начиная с
root, и ищет пользователя с указанным идентификатором. - Когда она находит нужного пользователя, она удаляет его и все его связи (если они есть) из списка.
- После удаления всех связей с пользователем, функция возвращает указатель на новый
root(первый элемент списка). В данном коде вызывается функцияdel_userс аргументамиrootи12345. Это означает, что будет выполнено удаление пользователя с идентификатором12345из связного списка, представленного в функцииmain. В конце кода функцияmainвозвращает0, что означает успешное выполнение программы.