Итак, я учился составлять связанный список, и мне было интересно, почему мы должны использовать «новый» при добавлении узла. Ниже приведена функция, которая правильно добавляет узел:
void addNode(int value){
Node* new_node_ptr = new Node;
new_node_ptr->value = value;
if (root == NULL){
root = new_node_ptr;
traveler = new_node_ptr;
} else {
traveler->next = new_node_ptr;
traveler = new_node_ptr;
}
}
Но, поскольку я новичок в c ++, когда я попытался выяснить, как сделать это самостоятельно, вместо строки:
Node* new_node_ptr = new Node;
Я написал:
Node new_node;
Node* new_node_ptr = &new_node;
Это не работает. Кажется, что переменная new_node продолжает присваиваться одному и тому же адресу памяти каждый раз, когда вы пытаетесь добавить новый узел. Это одновременно увлекательно и бесит. Кто-нибудь может объяснить мне эту странную с ++ странность?
Спасибо!