我正在尝试使用链接列表实现堆栈。我的程序不断崩溃,并且在尝试打印新的链接列表时,它会打印一个无符号整数。我的打印功能可以正常工作,因此下面是此功能。
请帮忙。
void LinkedList::Push (int val)
{
Node* newHead = new Node;
Node* oldHead = new Node;
newHead->value = val;
oldHead = head;
head = newHead;
oldHead->prev = head;
head->next = oldHead;
delete newHead;
}
最佳答案
一个问题是,您在Node
定义中new
定义的oldHead
永远不会delete
d。由于创建后立即将oldHead
设置为head
,因此建议将其定义为:
Node* oldHead = head;
但是,主要问题是您
delete
newHead
,现在是head
指向的内容。因此,当您打印head
时,您正在读取无效的数据。我强烈建议您将资源处理留给
std::shared_ptr
之类的对象,而不要自己new
ing和delete
。