栈的动态内存分配问题
链栈中有入栈和出栈函数 bool push ( Telem& el)、Telem pop()
入栈函数的处理过程:
(1)生成一个新的结点,并令其元素值为el
(2)将该结点从栈顶插入到链栈中
出栈函数的处理过程:
(1) 判断链栈是否为空,若空则返回空元素
(2)保存栈顶结点的元素值el,并修改栈顶指针使之指向其后继
(3)置返回函数值为el
问题:
1.出栈函数只是将栈顶指针指向其后继,并没有释放其动态分配的指针的存储空间,而某个元素入栈时是动态分配了空间的。但析构函数释放链栈所占的存储空间时只释放从当前元素以后 的 结点存储空间,
意思是:设一个空栈,a、b入栈,则分配两个存储空间,再令b出栈,那么析构函数只释放了a的结点存储空间,那么执行new与delete的次数不一致,不知道该怎样解释
2.清除栈的函数是只是将当前指针置为NULL,而未释放结点的存储空间,又是该怎样解释?