Я работаю над назначением с использованием модифицированной версии класса списка.Связанные с C++ списки
class List
{
private:
class Node
{
public:
std::string _entry;
Node * _link;
Node(std::string entry, Node * link) : _entry(entry), _link(link)
{}
};
};
Цель Я пытаюсь выполнить после ввода списка, мне нужно, чтобы иметь возможность удалить один элемент так, если я вхожу:
a
b
c
d
e
Мне нужно, чтобы иметь возможность удалить с, и оставить остальных незатронутыми. Моя функция:
bool deleteOneOf(const std::string & target)
{
Node * & del = _first;
Node * temp = _first;
if (contains(target))
{
del = find(temp, target);
del = del->_link;
}
delete temp;
return true;
}
else
{
return false;
}
}
и функция находка:
Node * & find(Node * & ptr, const std::string & target)
{
if (ptr == nullptr || ptr->_entry == target)
{
return ptr;
}
else
{
return find(ptr->_link, target);
}
}
Проблема у меня в том случае, если я вход C должен быть удален, это не правильно связать B с D, так C, D, E, удаляются, а не только C. Таким образом, выход AB, а не ABDE, как и должно быть.
Почему вы называете 'find' ближе к началу' deleteOneOf', когда похоже, что вы только что нашли цель? –
Я не вижу никакого кода, который каким-либо образом меняет «ссылку», а тем более правильный. –