Удаление элемента из двунаправленного списка
Из динамических структур можно удалять элементы, так как для этого достаточно изменить значения адресных полей. Операция удаления элемента из двунаправленного списка осуществляется во многом аналогично удалению из однонаправленного списка (рис. 29.6).
Рис. 29.6. Удаление элемента из двунаправленного списка
/*удаление элемента с заданным номером из двунаправленного списка*/
Double_List* Delete_Item_Double_List(Double_List* Head,
int Number){
Double_List *ptr;//вспомогательный указатель
Double_List *Current = Head;
for (int i = 1; i < Number && Current != NULL; i++)
Current = Current->Next;
if (Current != NULL){//проверка на корректность
if (Current->Prior == NULL){//удаляем первый элемент
Head = Head->Next;
delete(Current);
Head->Prior = NULL;
Current = Head;
}
else {//удаляем непервый элемент
if (Current->Next == NULL) {
//удаляем последний элемент
Current->Prior->Next = NULL;
delete(Current);
Current = Head;
}
else {//удаляем непервый и непоследний элемент
ptr = Current->Next;
Current->Prior->Next =Current->Next;
Current->Next->Prior =Current->Prior;
delete(Current);
Current = ptr;
}
}
}
return Head;
}
Дата добавления: 2015-08-14; просмотров: 737;