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

184
18 мая 2018, 20:00

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

Я только исправлю часть кода, что посчитал неправильным.

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

Получить адрес к файлу

На компьютере есть файл, пользователь его выбирает, я получаю путь до файлаТеперь мне надо прочитать байты этого файла из памяти

224
Не пишется бинарное дерево

Не пишется бинарное дерево

Есть программа в которой мне нужно построить бинарное деревоЭлементы добавляются, всё вроде бы шикарно, но когда я начинаю обходить дерево,...

207
Площадь треугольника

Площадь треугольника

Как вычислить площадь и периметр треугольника по 3 сторонам? Проверить возможно ли его создать?

188
нарушение доступа для чтения с бинарным файлом

нарушение доступа для чтения с бинарным файлом

Здравствуйте, третий час сижу и не могу понять, выдает ошибку при выходе из функции Get_write, помогите пожалуйста!

185