Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

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

При успешном удалении должно возвращать true, но почему то всегда возвращает фолс. Вот класс:
struct Num { int number; bool ring; Num *next, *prev; };
class List { protected : Num *head, *tail;
public : List():head(NULL),tail(NULL){} ~List(); int genNum(); void Add(int x); bool Remove(int i); };
И моя попытка переделать удаление :
bool List::Remove(int idx) { Num *current = head; Num *temp = nullptr; int i = 0;
while(current->next != NULL) { if(i != idx) { current = current->next; i++; }
else { temp = current->prev; current->prev = current->next; current->next->prev = temp;
return true; } }
return false; }


Ответ

Я только исправлю часть кода, что посчитал неправильным.
else { if (idx == 1) { temp = head; head = current; } else { temp = current->prev; // указывает на узель, который должен удаляться current->prev = temp->prev; current->prev->next = current; } delete temp; return true; }

Комментариев нет:

Отправить комментарий