【问题标题】:changing stack's top pointer by passing by pointer通过指针传递改变栈顶指针
【发布时间】:2018-08-19 11:14:03
【问题描述】:

我正在尝试更改堆栈的顶部指针。

1) 直接更改指针工作正常。并相应更改传递的指针。

root = root -> next;

2) 但是在取消引用指针然后在本地更改它并不会更改指针。

Node* root = *top;
root = root -> next

函数定义:

int pop(Node** top)
{
    if(isEmpty(*top))
        return -1;  

    Node* temp = *top
    int popped_data = temp-> data;

    Node* root = *top;
    //root = root -> next; // This is not modifying the actual pointer passed
    *top = (*top)->next; // This is working fine. top is changed

    delete temp;
    return popped_data;
}

【问题讨论】:

  • 那么,这是出于学术学习目的还是有其他原因不使用 C++ 标准容器?

标签: c++ pointers linked-list stack


【解决方案1】:

这样你就复制了一个指针

Node* root = *top;

和关注

root = root->next;

修改此副本。

您可以使用对指针的引用:

Node *&root= *top;

【讨论】:

  • 如何通过创建复制指针然后更改值来更改实际值。实际价值正在发生变化。无效 changeByCopy(int *i) { int *j = i; *j = 20; }
  • 我应该能够以同样的方式将指针更改为指针。复制然后更改它。要更改我正在传递 i 的指针,然后更改是通过创建一个复制指针。更改节点指针的相同方法我传递此节点指针的指针然后更改是通过创建一个复制指针。
  • @user3990393 在你的情况下你不能改变top,但你可以改变*top
  • @user3990393 在评论中你不改i,你改*i
猜你喜欢
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2016-08-26
相关资源
最近更新 更多