如何判断数据结构中栈为空的问题

RT 为什么是栈顶指针top==--1就是判定条件?为什么top会为--1呢?这是谁规定的?我看书上也没有关于这个的说明,编写自定义函数是也没有相关的定义,只是说用数组实现栈的时候系统这么默认?到底怎么回事??那位达人给解惑啊!!!

因为先进行堆栈操作的时候要TOP++。这个你懂得把。所以第一次操作的时候,直接TOP++就能对0号空间操作,这是堆栈操作的指令顺序,用汇编来描述就是sp<-sp+1,(sp)<-register,看得懂就看,看不懂也没事所以当TOP=-1时,必定是空栈。而反过来,假如堆栈只有一个空间在使用(即TOP=0),现在把它弹出了,就要执行TOP--,因此,TOP=-1必定是空栈,还有不懂可以问。。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-05-16
你说的这个情况应该是以数组构成顺序栈的情况下的
一个数组以数组底为栈底,而栈顶时钟标志是始终操作栈顶元素的。也就是说,你要压栈,必须先把栈顶标志加一之后才能写入,你要弹栈需要先读出再把栈顶标志减一。
那么,栈为空的时候标志肯定不能是0,因为它标志着栈顶元素是数组的第一个值,这样代表栈里是有一个元素的。所以,top是-1的时候它才是空栈,写入的时候要先加一,指向数组第一个空间了才能写
这样一想你就应该知道为什么top是-1时候代表栈空了本回答被网友采纳
相似回答