单选题
1-1
通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序列为:123。
F
注:应是231
Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)
1入 2入 2出 3入 3出 1出
1-2
若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。
F
注:一串数据依次通过一个栈,并不能保证出栈数据的次序总是倒置,可以产生多种出栈序列。一串数据通过一个栈后的次序由每个数据之间的进栈、出栈操作序列决定,只有当所有数据“全部进栈后再全部出栈”才能使数据倒置。事实上,存在一种操作序列――“进栈、出栈、进栈、出栈……”――可以使数据通过栈后仍然保持次序不变。
题目中输出序列的第一个元素是i,则第j个输出元素是不确定的。
1-3
若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。
T
注:3第一个出就代表
1,2此时还在栈内
故2一定在1前面出栈
1-4
栈顶元素和栈底元素有可能是冋一个元素。
T
注:例 当只剩下一个元素时,栈顶即为栈底
选择题
2-1
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是?
A.b c a e f d
B.c b d a e f
C.d c e b f a
D.a f e d c b
D
2-2
有六个元素以6、5、4、3、2、1的顺序进栈,问哪个不是合法的出栈序列?
A.2 3 4 1 5 6
B.3 4 6 5 2 1
C.5 4 3 6 1 2
D.4 5 3 1 2 6
B
2-3
若一个栈的入栈序列为1、2、3、…、N,输出序列的第一个元素是i,则第j个输出元素是:
A.i−j−1
B.i−j
C.j−i−1
D.不确定
D
2-4
将5个字母ooops
按此顺序入栈,则有多少种不同的出栈顺序可以仍然得到ooops
?
A.1
B.3
C.5
D.6
C
2-5
设一个堆栈的入栈顺序是1、2、3、4、5。若第一个出栈的元素是4,则最后一个出栈的元素必定是:
A.1
B.3
C.5
D.1或者5
D
2-6
给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1, p2, ⋯, pn }。如果p2=n,则存在多少种不同的出栈序列?
A.1
B.2
C.n−1
D.n
C
2-7
以下不是栈的基本运算的是( )。
A.删除栈顶元素
B.删除栈底元素
C.判断栈是否为空
D.将栈置为空栈
B
2-8
一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看, 通常递归过程比非递归过程( )。
A.较快
B.较慢
C.相同
D.无法确定
B
递归采用的是栈堆积的方式进行运算,每一次调用递归,内存都不断堆积,直到最后才求解,因此占用内存大,计算量成倍增加。所以递归过程较慢。
2-9
设顺序栈的栈顶指针(int 类型)指向栈顶元素位置,则判断一个栈ST(最多元素为MaxSize)为栈满的条件是()。
A.ST.top != -1
B.ST.top == -1
C.ST.top != MaxSize - 1
D.ST.top == MaxSize - 1
D
2-10
假设一个栈的输入序列是1,2,3,4,则不可能得到的输出序列是( )。
A.1,2,3,4
B.4,1,2,3
C.4,3,2,1
D.1,3,4,2
B