我正在尝试使用链表实现堆栈。我的程序不断崩溃,在尝试打印新的链表时,它打印了一个无符号整数。我的打印功能工作正常,所以就是下面这个功能。
请帮忙。
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;
}
最佳答案
一个问题是您在 oldHead
的定义中 new
的 Node
永远不会delete
d。由于您在创建后立即将 oldHead
设置为 head
,因此我建议您这样定义:
Node* oldHead = head;
不过,主要问题是您删除
newHead
,它现在是head
指向的.因此,当您去打印 head
时,您正在读取无效数据。
我强烈建议将资源处理留给像 std::shared_ptr
这样的对象。而不是 new
ing 和 delete
自己。
关于c++ - 程序因为链表创建推送功能而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657360/