При успешном удалении должно возвращать 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;
}
Комментариев нет:
Отправить комментарий