你好,我创建了两个函数pop和push。问题是程序在弹出功能后崩溃,我不知道为什么。如果你能帮我,我会很高兴的。
Struct Node
{
int num;
Node *next;
};
void push(Node** top, int num)
{
Node* tmp = *top;
Node* newNode = new Node;
newNode->num = num;
*top = newNode;
newNode->next = tmp;
}
int pop(Node* top)
{
Node *poppedLink = top;
top = poppedLink->next;
int ans = poppedLink->num;
delete poppedLink;
return ans;
}
您删除了节点,但外部代码没有意识到这一点,并继续使用指向"top"的旧指针(它已经死了)。您必须使用双指针作为输入参数,就像在push()中一样。
类似这样的东西(对不起,我没有在编译器上测试它):
int pop(Node** top)
{
Node *poppedLink = *top;
*top = poppedLink->next;
int ans = poppedLink->num;
delete poppedLink;
return ans;
}