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