我正在尝试使用链接列表实现堆栈。我的程序不断崩溃,并且在尝试打印新的链接列表时,它会打印一个无符号整数。我的打印功能可以正常工作,因此下面是此功能。

请帮忙。

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

07-24 09:34