设栈的顺序存储空间为S(1:m),初始状态为TOP=m+1。现经过一系列入栈与退栈运算后,TOP=20,则当前栈中的元素个数为(C)
A) 30 B)20 C)m-19 D)m-20
我想不明白为什么是C,求详细的简单的讲解,我只是刚学,栈的知识仅限于知道它的定义,栈顶和栈底,和基本运算
从栈顶压向栈底是什么意思?怎么压的?
追答就是倒着压
一般平时是从栈底向栈顶压,这道题目中是倒过来的
追问那是不是从栈底到栈顶20之间没有元素?
追答是的
追问天啊,终于明白了,另外还想问一个问题,为什么是m-19,不是m-20呢?
追答TOP最开始是m+1,现在是20,因此元素个数是m+1-20,即m-19。
追问不,问错了,为什么不是m-18,就是m+1-20+1
追答20+1是什么意思?
追问就是,比如0-10有11个元素,所以我认为要加一个1
追答如果是0到10也只有10个元素,栈顶是不存储元素值的,只有0到9的位置有元素。
追问顺序栈和链栈都是这样吗?
追答链栈不是这样计算的,链栈的位置一般不是连续的。
追问不连续是不是意味着链栈不能像顺序栈这样简单的加减?
追答我之前说错了一个地方,栈顶的位置是存储元素的。
链栈不能像顺序栈这样加减。
追问是的话为什么不加1呢?
追答因为TOP开始是m+1,现在是20,因此两者之差的绝对值就是元素个数。
就像从0开始,最开始TOP=bottom-1,即TOP=-1,现在是TOP=10,两者之差的绝对值就是元素个数即11。
你说的要加1,是m-20+1。
如果是考试,你这里可以这样:
把m看成一个确切的数字,比如m=23,那么一开始时,TOP=24,现在TOP=20,这之间就可以简单的数出来有4个元数,对照一下答案,就选C了。
哦哦,我大致明白了,谢谢
我是想问怎么算成C答案的