Как добавить элемент в n месте двусвязного списка? Не могу реализовать функцию добавления элемента в список, каждый раз список пересоздается и там всегда 1 элемент
.cpp file#include "List.h"
void List::show()
{
Node *tmp = head;
while (tmp != NULL)
{
cout <str <next;
}
}
void List::add(int x, string str2)
{
Node *temp = new Node;
temp->next = NULL;
temp->str = str2;
temp->priority = x;
if (head != NULL)
{
Node *quest = found(x);
temp->prev = quest;
temp->next = quest->next;
if (quest == head)
{
head = temp;
}
if (quest == tail)
{
tail = temp;
}
}
else
{
temp->prev = NULL;
head = tail = temp;
}
}
void List::delet()
{
tail = tail->prev;
}
Node * List::found(int priority)
{
if (head->next!=NULL)
{
if (search->priority == priority)
return search;
else
return search = search->next;
}
else
{
return head;
}
}
List::List()
{
head = NULL;
tail = NULL;
}
List::~List()
{
}

21 Авг 2019 в 06:59
204 +1
0
Ответы
1

Для добавления элемента в n место двусвязного списка нужно изменить метод add. Вот исправленный вариант:

void List::add(int x, string str2)
{
Node *temp = new Node;
temp->next = NULL;
temp->str = str2;
temp->priority = x;
if (head != NULL)
{
Node *quest = found(x);
temp->prev = quest;
temp->next = quest->next;
quest->next->prev = temp;
quest->next = temp;
}
else
{
temp->prev = NULL;
head = tail = temp;
}
}

Теперь при вызове метода add с указанием приоритета и значения элемент будет добавлен в список на соответствующее место.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир