selantor 发表于 2018-2-10 18:18:26

课时24关于销毁一个栈的代码为什么先释放了栈底?

栈不是一个后进先出的线性结构吗,小甲鱼老师在24课时的代码中销毁一个栈时for循环执行的是free(s->base),是否有问题?

ba21 发表于 2018-2-10 18:20:07

上代码

selantor 发表于 2018-2-10 18:22:35

代码在此

selantor 发表于 2018-2-10 18:29:17

ba21 发表于 2018-2-10 18:20
上代码

你好看到了吗

ba21 发表于 2018-2-10 19:16:07

selantor 发表于 2018-2-10 18:29
你好看到了吗

从top 开始 和从base 开始都可以。
好比你要删除桌面上的文件,从第1个开删,和从最后1个开始删一个意思。哪个方便用哪个。

selantor 发表于 2018-2-10 22:48:03

ba21 发表于 2018-2-10 19:16
从top 开始 和从base 开始都可以。
好比你要删除桌面上的文件,从第1个开删,和从最后1个开始删一个意思 ...

但是问老师老师坚持说无论如何都不可能在栈底进行操作,栈是限制在一段进行操作的线性结构,并说如果base在这指的是栈底指针的话程序就是错的

ba21 发表于 2018-2-11 22:37:17

selantor 发表于 2018-2-10 22:48
但是问老师老师坚持说无论如何都不可能在栈底进行操作,栈是限制在一段进行操作的线性结构,并说如果base ...

我也不知道他有没有说过。这只是编程模拟栈 的操作。是一个线性表,你要怎么操作就怎么操作。
最后 再说了 都要 销毁栈 了还管他从上还是从下。销毁什么都没了

selantor 发表于 2018-2-14 20:22:45

请问这个问题从栈顶开始操作会不会更严谨一点?
从栈顶操作是将i改为栈顶下标然后循环改为i--然后free(s->top);s->top--;
这样改可以吗
页: [1]
查看完整版本: 课时24关于销毁一个栈的代码为什么先释放了栈底?