Двунаправленый список, удаление элемента. ошибка! - C (СИ)
Формулировка задачи:
Подскажите пожалуйста, где ошибка! Удаление элемента в двунаправленном списке (допустим, что список не пустой, и в нем есть указанный элемент в количестве одной штуки ). При любых введенных данных у меня удаляется первый элемент.
Spis *del;
t=begin;
printf("Bвдите элемент для удаления: ");
scanf("%d",&a);
while (t!=NULL){
if (t->info==a) {
printf("Элемент %d найден. \n", t->info);
del=t;
break;
}
t=t->Next;
};
//******* удаление элемента *******>
if (del->Prev==NULL) { //если элемент первый
begin=begin->Next;
begin->Prev=NULL;
}
else if(del->Next==NULL) { // если элемент последний
end=end->Prev;
end->Next=NULL;
}
else { // если элемент в середине списка
(del->Prev)->Next=del->Next;
(del->Next)->Prev=del->Prev;
free(del);
}
//список после удаления элемента
t=begin;
while (t!=NULL){
printf(" %d ", t->info);
t=t->Next;
}Решение задачи: «Двунаправленый список, удаление элемента. ошибка!»
textual
Листинг программы
void Delete(struct Spis* del)
{
if(del>Prev)
del>Prev->Next = del->Next;
if(del>Next)
del>Next->Prev = del->Prev;
free(del);
}
Объяснение кода листинга программы
- В данной функции есть ошибка, которая приводит к неопределенному поведению.
- Функция предназначена для удаления элемента из двунаправленного списка.
- При удалении элемента, нужно обновить ссылки на предыдущий и следующий элементы.
- Если удаляемый элемент является первым или последним в списке, то нужно обновить ссылки на заголовок списка.
- Для удаления элемента, используется функция free().
- В данной реализации двунаправленного списка, не предусмотрено добавление элементов в список.
- В данной реализации двунаправленного списка, не предусмотрено получение элементов из списка.
- В данной реализации двунаправленного списка, не предусмотрено изменение содержимого элементов списка.
- В данной реализации двунаправленного списка, не предусмотрено циклация по элементам списка.
- В данной реализации двунаправленного списка, не предусмотрено удаление всех элементов списка.
- Для работы с двунаправленным списком, нужно реализовать следующие функции: Create(), Insert(), Delete(), Get(), Set(), Prev(), Next().
- Для корректной работы двунаправленного списка, нужно реализовать проверку на ошибки и обработку исключений.
- Для корректной работы двунаправленного списка, нужно использовать подходящую структуру данных для хранения элементов списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для добавления, удаления и получения элементов списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для циклации по элементам списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для удаления всех элементов списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для обновления ссылок на предыдущий и следующий элементы при добавлении, удалении и получении элементов списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для обновления ссылок на предыдущий и следующий элементы при циклации по элементам списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для обновления ссылок на предыдущий и следующий элементы при удалении всех элементов списка.
- Для корректной работы двунаправленного списка, нужно использовать подходящий алгоритм для проверки корректности ссылок на предыдущий и следующий элементы.