Удаление элемента из двунаправленного списка

Из динамических структур можно удалять элементы, так как для этого достаточно изменить значения адресных полей. Операция удаления элемента из двунаправленного списка осуществляется во многом аналогично удалению из однонаправленного списка (рис. 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; просмотров: 692;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.