Удаление и поиск элемента в односвязном списке - C (СИ)
Формулировка задачи:
Вот мои функции, но они почему то не работают: функция удаления удаляет всегда голову, а функция поиска находит все элементы.
ITEM* delete_node(ITEM* head, int delete_data)
{
ITEM *cur, *prev;
prev=NULL;
cur=head;
while(cur!=NULL/* && cur->data<=delete_data*/)
{
if(delete_data-0.1<cur->data<delete_data+0.1)
{
if(prev==NULL)
{
head=head->next;
printf("Jelement(golova) udalen");
}
else
{
cur=cur->next;
printf("Jelement udalen");
}
free(cur);
return head;
}
prev=cur;
cur=cur->next;
}
printf("Jelement otsustvuet v spiske\n" );
return head;
}
ITEM* find_node(ITEM* head, float find_data)
{
ITEM *cur;
cur=head;
while(cur!=NULL && cur->data<=find_data)
{
if(find_data-0.1<cur->data<find_data+0.1)
{
printf("Jelement najden\n");
return cur;
}
cur=cur->next;
}
printf("Jelement ne najden \n");
return NULL;
}Решение задачи: «Удаление и поиск элемента в односвязном списке»
textual
Листинг программы
Вот элемент главной функции:
puts("Vvedite chislo");
scanf("%f",&chislo);
Head=delete_node(Head,chislo);
getch();
break;
Объяснение кода листинга программы
- Ввод числа с клавиатуры
- Вызов функции delete_node(Head,chislo)
- Удаление узла из списка
- Вывод на экран значения переменной chislo
- Получение следующего ввода с клавиатуры
- Вызов функции getch() для приостановки выполнения программы до нажатия клавиши
- Прерывание выполнения программы