1、顺序栈:使用一组连续的内存依次保存栈中的数据,定义一个top变量来保存栈顶序号。栈结构是“后进先出”的原则。栈的最基本操作有两个:push(入栈) + pop(出栈)
2、应该是以数组构成顺序栈的情况下的 一个数组以数组底为栈底,而栈顶时钟标志是始终操作栈顶元素的。也就是说,你要压栈,必须先把栈顶标志加一之后才能写入,你要弹栈需要先读出再把栈缎鞴缪鳙顶标志减一。 那么,栈为空的时候标志肯定不能是0,因为它标志着栈顶元素是数组的第一个值,这样代表栈里是有一个元素的。所以,top是-1的时候它才是空栈,写入的时候要先加一,指向数组第一个空间了才能写 。
3、这个没有规定 但是要贰浆田愠纠正一点,top是一个整型标志,它并不是一个数组下标,只是在这里你把它用作下标了 如果它是-1的时候用作下标肯定是不行的,但是作为一个栈,这个情况是不会出现的,因为你在弹栈之前肯定会检测栈是否为空,你不会明明知道栈是空的还进行弹栈操作吧(如果硬是要操作当然出错了),空栈压栈前top会自加一的,这个时候是用作了下标,但是它不是-1了,
4、所以,你不必担心数组下标问题不会存在 至于建立栈的话,你如果要想使用顺序栈就要这样做,定义栈空只能是top=-1 。或者,你会增加一个栈元素计数器,这样太不划算了。
5、栈空条件是top==-1栈满条件是top==maxsize-1栈空表明data中一个数都没有,由于数组下标从0开始,因此栈空的时候应该为0-1堆满表明data中数据都占满了,所以应该取数组的最大值,maxsize-1
6、可能这样也还可以用empty或是full来判断是否栈满栈空