Я хочу создать случайный двусвязный список фиксированной длины, выбранный пользователем.
Список будет вставлять первое значение в заголовок, а затем все остальные значения в конец списка, но он не корректно корректирует указатели.
Головной и хвостовой узлы оба инициализируются в основном в NULL
.
Случайные значения работают, проблема с указателями, так как на второй итерации хвост остается тем же, что и голова, то есть список не увеличивается.
void GenRandSeq(struct Node* &head, struct Node* &tail, int len){
int i = 0;
std::mt19937 rng;
std::uniform_int_distribution<uint32_t> uint_dist(0,10000);
while (i < len){
Node* newNode = new Node();
int new_el = uint_dist(rng);
newNode->key = new_el;
newNode->prev = NULL;
newNode->next = NULL;
if (head == NULL){
tail = newNode;
head = newNode;
}
else{
if (tail != NULL){
newNode->next = NULL;
newNode->prev = tail;
tail->next = newNode;
}
else
tail = newNode;
}
i++;
}
}
Я не вижу, что мне не хватает в коде.