为了账号安全,请及时绑定邮箱和手机立即绑定

c语言销毁栈的函数。大家看看写的对不?

c语言销毁栈的函数。大家看看写的对不?

守候你守候我 2019-02-06 10:07:31
c语言销毁栈的函数。大家看看写的对不?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

这两个函数一个是销毁栈DestroyStack,一个是清空栈ClearStack
销毁是把整个栈都释放掉,清空只是把栈里元素清除。
因为你的栈元素是int型基本变量,所以栈元素内容是直接存放在栈空间的,并没有另外申请内存保存栈元素,所以在从栈里移除栈元素时,不需要调用free函数。
实际上你的DestroyStack可以很直接的如下:
int DestroyStack(stack &s)
{
free(s.base); //释放栈空间,这里假设s.base是个指针而不是数组
//如果s结构也是动态申请的,也需要执行free(s);
}
至于ClearStack,书上写的是没问题的,清空栈,不是要释放栈空间,而是把栈里的元素都清除,最直接的做法就是把栈顶指针指向栈底指针,栈顶和栈底指针相同时,就表示栈内无元素,栈空间还是保留,下次可以继续把栈元素压栈和弹栈。

查看完整回答
反对 回复 2019-03-16
  • 2 回答
  • 0 关注
  • 863 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信