Подскажите как написать функцию insert для forward list?

246
26 сентября 2017, 07:25

мне подсказали что можно как-то так, но тут запутанно, не совсем пойму:

struct Node{
  int value;
  Node* next;
  Node* prev;
};
void insert(Node*n, int val)
{
  Node*a = new Node;
  n->next = a;
  a->next = n->next;
  a->value = val;
  n->value = a->value;
}
Answer 1

Тогда уж так:

void insert(Node*n, int val)
{
    Node*a = new Node;
    a->value = val;
    a->next = n->next;
    n->next = a;
    a->prev = n;                    // Не нужно для односвязного списка
    if (a->next) a->next->prev = a; // Не нужно для односвязного списка
}

Т.е. вы просто вставляете после n новый узел, обновляя соответствующим образом поля n и a. n теперь указывает на a, а a - куда раньше указывал n.

READ ALSO
Переведите в с++ [требует правки]

Переведите в с++ [требует правки]

Натуральное число из n цифр называется числом Армстронга, если сумма его цифр, возведенная в степени n, равна самому числуПодсчитать все числа...

208
WinAPI вынести hook в dll

WinAPI вынести hook в dll

Сделал глобальный хук на отлов нажатий некоторых клавишНо, не всегда срабатывает

309
Создание динамических блоков

Создание динамических блоков

Есть json такой структуры

381