您好我已经创建了两个pop和push函数。问题是程序在pop函数后崩溃,我无法理解为什么。如果你能帮助我,我会很高兴。
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;
}
答案 0 :(得分:3)
删除节点但外部代码不知道这一点并继续使用旧指针“top”(已经死了)。你必须使用双指针作为输入参数,就像它在push()中发生的那样。
这样的事情(抱歉,我没有在编译器上测试它):
int pop(Node** top)
{
Node *poppedLink = *top;
*top = poppedLink->next;
int ans = poppedLink->num;
delete poppedLink;
return ans;
}