1、入栈顺序为K、L、M、N,则以下哪种出栈顺序不可能发生()
正确答案: C 你的答案: D (错误)
KLMN
LKMN
NLMK
NMLK
2、两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端()。
正确答案: A 你的答案: B (错误)
正确
错误
3、采用顺序存储的栈,执行入栈运算,栈顶指针的变化是()
正确答案: A 你的答案: B (错误)
top++
top–
不变
(top++)++
解析:入栈操作时栈顶指针指向下一个空闲位置,顺序存储,top++
4、设有四个元素A、B、C、D顺序进栈,在进栈过程中可以出栈,出栈次序错误的排列是
正确答案: F 你的答案: C (错误)
ABCD
DCBA
ACBD
BCDA
ACDB
DCAB
5、若一序列进栈顺序为e1,e2,e3,e4,e5,问存在多少种可能的出栈序列()
正确答案: B 你的答案: C (错误)
41
42
43
44
解析:记住公式: C(2n,n)/(n+1)
6、以下哪个不是分配在栈上的?
正确答案: C 你的答案: A (错误)
函数内局部变量
函数内局部指针变量
函数内动态申请的对象
函数内指向动态申请的对象的局部指针变量
7、以下哪些对象是分配在栈上的
正确答案: A B D 你的答案: C (错误)
函数内局部变量
函数内局部指针变量
函数内动态申请的对象
函数内指向动态申请的对象的局部指针变量
8、栈是实现过程和函数等子程序所必需的结构()
正确答案: A 你的答案: B (错误)
对
错
9、若用数组S[0…n]作为两个栈S1和S2的存储结构,对任何一个栈只有当S全满时才不能做入栈操作。为这两个栈分配空间的最佳方案是
正确答案: A 你的答案: A (正确)
S1的栈底位置为0,S2的栈底位置为n
S1的栈底位置为0,S2的栈底位置为n/2
S1的栈底位置为1,S2的栈底位置为n/2
解析:两个栈的栈底一个在数组第一个元素,朝着数组正方向增长
另一个在数组最后一个元素,朝着数组索引减小的方向增长。
当两个栈的栈顶相等是,表明数组满了,不能继续入栈
10、队列和栈都是运算受限的线性表,只允许在表的两端进行运算()
正确答案: B 你的答案: A (错误)
对
错
解析:前半句是对的,后半句不对 栈只能在一端操作,队列可以在两端操作
11、创建对象时,对象的内存和指向对象的指针分别分配在( )
正确答案: A 你的答案: C (错误)
堆区,栈区
常量区,堆区
全局区,栈区
栈区,堆区
12、用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(O>P),那么模拟实现的队列最大容量是多少?
正确答案: C 你的答案: B (错误)
O+P
2O+1
2P+1
2O-1
13、一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()
正确答案: C 你的答案: D (错误)
n-3
n-2
n-1
无法确定
解析:举例子
14、以下关于栈的说法错误的是:
正确答案: B C D 你的答案: A B C D (错误)
在栈空的情况下,一定不能作出栈操作,否则产生溢出。
栈一定是顺序存储的线性结构。
空栈是所有元素都为0的栈。
一个栈的输入序列为:A,B,C,D,可以得到输出序列:C,A,B,D。
15、判定一个顺序栈 st (最多元素为 MaxSize )为满的条件是
正确答案: D 你的答案: B (错误)
st->top != -1
st->top == -1
st->top != MaxSize
st->top == MaxSize
16、设栈的顺序存储空间为 S(0:49) ,栈底指针 bottom=49 ,栈顶指针 top=30 (指向栈顶元素)。则栈中的元素个数为( )。
正确答案: C 你的答案: D (错误)
30
29
20
19
17、设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。
正确答案: D 你的答案: B (错误)
top=top+1;
top=top-1;
top->next=top;
top=top->next;
18、全局变量和局部变量在内存中的区别是什么?
正确答案: B C 你的答案: B C D (错误)
二者没有区别
生存周期不同
作用范围不同
占用的内存大小一样
19、堆栈溢出一般是由什么原因导致的?
正确答案: B C
函数代码长度过长
循环的递归调用
大数据结构的局部变量
代码运行时错误