通过传递指针来改变堆栈的顶部指针

时间:2018-03-11 08:42:15

标签: c++ pointers linked-list stack

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

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;
}

1 个答案:

答案 0 :(得分:0)

通过这个你正在复制一个指针

Node* root = *top;

以及

root = root->next;

修改此副本。

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

Node *&root= *top;