为什么弹出堆栈会返回垃圾而不是初始变量?

时间:2018-09-27 05:05:10

标签: c++ arrays stack push pop

当我运行程序时,它将数字完美地推入数组。但是当它弹出它们,然后打印它们时,我得到了垃圾编号。问题是否与我的主要功能有关? 还是我在Stack类中没有正确初始化数组?刚开始我的构造函数遇到了一些问题,但是在进行了一些调整之后,它似乎仍然可以正常工作。

在运行脚本后为什么收到垃圾编号有什么特别之处?

谢谢

<ListGroup>
    <TransitionGroup className="shopping-list">
        { 

        }
    </TransitionGroup>
</ListGroup>

2 个答案:

答案 0 :(得分:3)

调用top的构造函数后未设置

maxMyStack,您正在创建局部变量,并且成员不受影响:

int max = m; // local 
list = new int[max];
int top = -1; // local

更改为

max = m;
list = new int[max];
top = -1;

答案 1 :(得分:2)

a函数中从未使用参数peek()

int MyStack::peek(int &a) const
{
    if (top > -1)
    {
        return(list[top]); // you return the value instead of assigning it to "a"
        return 0; // unreachable by the way
    }
    return -1;
}