在链表类中,下面的代码声明Node<T> *newNode
:
void LinkedList<T>::push_front(const T& val) {
Node<T> *newNode = new Node<T>(val);
newNode->next = head;
head = newNode;
if(newNode->next == NULL) tail = newNode;
}
为什么使用动态分配?我们不能只写Node<T> newNode(val);
吗?
我认为既然我们没有制作newNode
的数组,它是有效的。
局部变量(如Node<T> newNode(val);
)在退出函数时将被销毁(或者更确切地说,在退出创建它的作用域时(即大括号,或多或少)。
但是对于链表,你希望节点活得更长;只要你愿意,就可以。