知识点
栈由于是一端进出,bottom永远指向底部,故元素个数的变动仅取决于指针top。栈是线性结构顺序存储,故一开始就开辟了一个固定大小的存储空间,当栈满以后不能再进行入栈操作,否则会发生“上溢”错误。上图开辟了一个1-50的存储空间,当栈空时,top=0。有时题干会写top=-1,此时也表示为空。
上图是正栈,意思是当入栈一个元素后,top=top+1。有时题干会考察倒栈,倒栈为空时,top=51,当入栈一个元素后时,top=top-1。
例题
1.设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列入栈与退栈运算后,top=m+1,则当前栈中的元素个数为(C)
A.0
B.m
C.不可能
D.m+1
解析:存储空间为S(1:m),初始状态为top=0,说明此时为空的正栈。一系列操作后,top=m+1,这显然不可能,因为栈满后不能再进行入栈操作。故选C
2.设栈的顺序存储空间为S(1:50),初始状态为top=-1。现经过一系列入栈与退栈运算后,top=30,则当前栈中的元素个数为(D)
A.20
B.19
C.31
D.30
解析:初始状态为top=-1,说明此时为空栈。一系列入栈退栈后,top=30,此时元素个数应该从1开始算起,1-30的位置都有元素,说明一共有30个元素。故选D。
3.设栈的顺序存储空间为S(1:m),初始状态为top=m+1,则栈中的元素个数为(B)
A.top-m+1
B.m-top+1
C.m-top
D.top-m
解析:初始状态top=m+1,说明是空的倒栈,此时栈中元素个数为0,m-top+1=m-m-1+1=0。故选B.。
4.设栈的顺序存储空间为S(1:50),初始状态为top=51。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为(A)
A.31
B.30
C.21
D.20
解析:初始状态为top=51,说明为空的倒栈,一系列操作后,top=20,此时S(20:50)的位置都有元素,故共有50-20+1=31个元素。故选A。