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

如题所述

你说的这个情况应该是以数组构成顺序栈的情况下的一个数组以数组底为栈底,而栈顶时钟标志是始终操作栈顶元素的。也就是说,你要压栈,必须先把栈顶标志加一之后才能写入,你要弹栈需要先读出再把栈顶标志减一。那么,栈为空的时候标志肯定不能是0,因为它标志着栈顶元素是数组的第一个值,这样代表栈里是有一个元素的。所以,top是-1的时候它才是空栈,写入的时候要先加一,指向数组第一个空间了才能写这个没有规定但是要纠正一点,top是一个整型标志,它并不是一个数组下标,只是在这里你把它用作下标了如果它是-1的时候用作下标肯定是不行的,但是作为一个栈,这个情况是不会出现的,因为你在弹栈之前肯定会检测栈是否为空,你不会明明知道栈是空的还进行弹栈操作吧(如果硬是要操作当然出错了),空栈压栈前top会自加一的,这个时候是用作了下标,但是它不是-1了,所以,你担心的数组下标问题不会存在至于你说建立栈的话,你如果要想使用顺序栈就要这样做,定义栈空只能是top=-1 。或者,你会增加一个栈元素计数器??这样太不划算了追问:我再问一下,请问就是怎么规定top的位置啊?书上说的是习惯上称指示栈顶位置的成员top为栈顶指针,这句话怎么理解?那比如有4个元素的栈,我想删除1位置上的,那么栈的删除方式是从栈顶指针处删除,那么我只需删除1位置上的top对吗?那么这个top和栈顶指针什么关系?怎么定义啊?我没看到说top就是数组下标的这个说法。。。回答:c语言应用的时候一般不是以 stack[top]的形势而是 stack + top的形势 此时 stack是一个指针 ,指针与整型做加法表示的是偏移量top的值就是偏移量咯,它代表元素位置。这就是那个理解方式 指示栈顶位置的成员top就是这里的整型变量top栈是一个先入后出的数据结构,你想删除位置1上的,那就不得不从4开始一个个的删除,不能从中间删除,这是栈的特性
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网