Примечание : Я не уверен, чего вы пытаетесь достичь, но вы могли бы написать функцию-член insertAfter. Эта функция берет новый элемент и вставляет его сразу после указанного элемента в связанном списке.
Для этого необходимо сначала установить ссылку «следующий» для нового элемента, а затем вставить новый элемент сразу после запрошенного элемента.
void Queue::insert(Node *newElement, Node *insertAfter)
{
_ASSERT(insertAfter != nullptr);
_ASSERT(newElement != nullptr);
// set the 'next' of the new element to the 'next' of the insertAfter
newElement->next = insertAfter->next;
// now insert the new element immediately after the 'insertAfter'
insertAfter->next = newElement;
}
// Taken from the original post...
// Of course, "addToFront" is no longer the correct name for this function,
// since it does no longer add the element to the front
void Queue::addToFront(...)
{
if (head==nullptr) {
// see original post above
} else {
// insert new element at the 2nd position in the queue,
// immediately behind the head
insert(temp, head);
}
}
Для дальнейшего изучения вы можете прочитать о связанных списках и взглянуть на интерфейс std :: list. Возможно, вы захотите улучшить свой код с помощью shared_ptr / unique_ptr вместо использования Node *. В современном C ++ вы бы почти никогда не использовали
Node *element=new Node();
В большинстве случаев это просто плохой код. Самостоятельное управление указателями и временем жизни объекта
приглашение на всевозможные неприятные проблемы (утечки памяти, нарушения доступа,
проблемы мелкого и глубокого копирования, неспособность освободить объекты, особенно после исключений и т.д ...). Использование управляемых или умных указателей значительно облегчит вашу жизнь:
shared_ptr<Node> element(new Node());
// or even better
shared_ptr<Node> element=std::make_shared<Node>();
Примечание: «управляемые / умные указатели» не имеют ничего общего с управляемым кодом C # / C ++. Название просто говорит о том, что существует класс (shared_ptr), который выполняет какое-то автоматическое управление и берет на себя часть вашего бремени.