You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:48:18