肥宅xiaofu 2022-04-05 10:26 采纳率: 0%
浏览 23

针对链接栈中元素出栈的问题

// 6.实现出栈
template<typename T>
bool LinkStack<T>::Pop(T&x)
{
    LinkNode<T> *p;
    if (IsEmpty())// 栈空的时候不能让元素出栈
    {
        return false;
    }
    else
    {
        x = top->data;
        p = top;
        top = top->next;// 指向原来栈顶的下面的元素
        delete p;       // 将原来的栈顶删除
        //p = NULL;
        size--;
        return true;
    }
}

上面是链接栈中元素出栈的代码,为什么top=top->next之后p还指向的是原来的top呢?刚开始p=top,这不就说明开始的时候top和p指向的是同一块内存空间吗?

  • 写回答

1条回答 默认 最新

  • 一只||小白 2022-04-05 14:14
    关注

    top指针如何变化跟p指针没关系,只有p指向的内存空间发生变化,p才会跟着改变,即使用delete语句删除了指针p,也只是删除了p所指向的内存空间的内容,该内存空间即地址依旧存在,只不过里面的内容没有了,此时里面的内容为乱码

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月5日

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作