STACK类pop()方法是否真正移除数组num元素?还是仅修改top索引?
栈pop方法的行为解析
先直接给出结论:
- 这个
pop()方法没有真正从数组num里移除元素,原来的元素依然留在数组中。 - 完全正确,这个pop函数确实只是修改了
top索引,根本没对数组本身的元素做删除操作。
具体分析
看这段实现代码:
int STACK::pop() { int temp; if(isEmpty()) return -9999; temp=num[top]; --top; return temp; }
代码逻辑很直白:先判断栈是否为空,不为空就把当前top指向的元素存到临时变量里,接着把top索引减一,最后返回临时变量。整个过程里,数组num中对应位置的元素没有被任何操作修改或清除——它还待在原来的位置,只是栈的top指针往后挪了一位,后续的栈操作(比如push、peek)只会访问top及之前的位置,不会再碰那个“被弹出”的元素而已。
举个实际例子:假设栈的top初始是2,num[2]的值是10。执行pop后,top变成1,num[2]还是10,只是栈现在认为自己的栈顶是num[1]了。
内容的提问来源于stack exchange,提问作者MukulWadhwa
相关产品推荐
相关产品推荐

