【问题标题】:Pop and push functions at stack Linked list堆栈中的弹出和推送功能 链表
【发布时间】:2014-12-19 01:50:32
【问题描述】:

您好,我创建了两个函数 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;

}

【问题讨论】:

  • 你的 Node 定义不应该编译。
  • 对不起,我忘记了它的一部分(更正)
  • 现在好多了,但是c++中没有Struct关键字。

标签: c++ pointers linked-list stack


【解决方案1】:

您删除了节点,但外部代码没有意识到这一点,并继续使用指向“top”的旧指针(它已经死了)。您必须使用双指针作为输入参数,就像在 push() 中发生的那样。

类似这样的东西(对不起,我没有在编译器上测试过):

int pop(Node** top)
{
 Node *poppedLink = *top;
 *top = poppedLink->next; 
 int ans = poppedLink->num; 
 delete poppedLink; 

 return ans;
}

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多