第 3 章 栈和队列
一、选择题
1. 对于栈操作数据的原则是( )。
A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序
2. 一个栈的输入序列为 123…n,若输出序列的第一个元素是 n,输出第 i(1<=i<=n)个元素是( )。
A. 不确定 B. n-i+1 C. i D. n-i
3. 若一个栈的输入序列为 1,2,3,…,n,输出序列的第一个元素是 i,则第 j 个输出元素是( )。
A. i-j-1 B. i-j C. j-i+1 D. 不确定的
4. 一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。
A. 2 3 4 1 5 B. 5 4 1 3 2
C. 2 3 1 4 5 D. 1 5 4 3 2
5. 输入序列为 ABC,可以变为 CBA 时,经过的栈操作为( )
A. push,pop,push,pop,push,pop
B. push,push,push,pop,pop,pop
C. push,push,pop,pop,push,pop
D. push,pop,push,push,pop,pop
6. 若一个栈以向量 V[1..n]存储,栈为空时栈顶指针 top 为 n+1,则下面 x 进栈的正确操作是( )。
A.top:=top+1; V [top]:=x
B. V [top]:=x; top:=top+1
C. top:=top-1; V [top]:=x
D. V [top]:=x; top:=top-1
7. 栈在( )中应用。
A. 递归调用 B. 子程序调用 C. 表达式求值 D. A,B,C
8. 一个递归算法必须包括( )。
A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D.终止条件和迭代部分
9. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操
作时( D )。
A.仅修改队头指针 B. 仅修改队尾指针
C. 队头、队尾指针都要修改 D. 队头,队尾指针都可能要修改
当仅有一个元素的时候,头尾都需修改
10. 递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结构。
A.队列 B.多维数组 C.栈 D. 线性表
11. 假设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的元素个数为(
)。
A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m
12. 循环队列存储在数组 A[m]中,则入队时的操作为( )。
A. rear=rear+1 B. rear=(rear+1) mod (m-1)
C. rear=(rear+1) mod m D. rear=(rear+1)mod(m+1)
13. 若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一
个元素,再加入两个元素后,rear 和 front 的值分别为多少?( )
A. 1 和 5 B. 2 和 4 C. 4 和 2 D. 5 和 1