2.6 队列练习题
1. 已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素
是 13,则第五个出队列的元素是( )。
A. 5 B. 41 C. 77 D. 13 E. 18
2.设栈 S 和队列 Q 初始状态为空,元素 e 1 ,e 2 ,e 3 ,e 4 ,e 5 ,e 6依次通过栈 S,
一个元素出栈后即进入队列 Q,若出队顺序为 e 2 ,e 4 ,e 3 ,e 6 ,e 5 ,e 1 ,则栈 S的
容量至少应该为______________。
3.设循环队列中数组的下标范围是 1..n,其头尾指针分别为 f 和 r,则其元素个数为:
_____________________。
4. 若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,
当从队列中删除一个元素,再插入两个元素后,rear 和 front 的值分别为多少?( )
A. 4和2 B.2和 4 C. 3和0 D.0和 3
5. 在具有n 个单元的顺序存储的循环队列中,假定front 和rear 分别为队头指针和队
尾指针,则判断队满的条件为( )。
A.rear%n= = front B.(front+1)%n= = rear
C.rear%n -1= = front D.(rear+1)%n= = front
7.在具有n 个单元的顺序存储的循环队列中,假定front 和rear 分别为队头指针和队尾
指针,则判断队空的条件为( )。
A.rear%n= = front B.front+1= rear
C.rear= = front D.(rear+1)%n= front
参考答案:
1.B 2.3 3.(r-f+n)mod n 4.B 5.D 6.C
2.7 栈与队列作业题
1. 栈中元素的进出原则是( )
A.先进先出 B.后进先出 C.栈空则进 D.栈满则出
2.数组 Q[n]用来表示一个循环队列,f 为当前队列头元素的前一位置,r 为队尾元素
的位置,假定队列中元素的个数小于n,计算队列中元素的公式为( )
A.r-f; B.(n+f-r)% n; C.n+r-f; D.(n+r-f)% n
3. 设有 4 个数据元素 a1、a2、a3 和 a4,对他们分别进行栈操作或队操作。在进栈或
进队操作时,按 a1、a2、a3、a4 次序每次进入一个元素。假设栈或队的初始状态都是空。
现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈
得到的元素是 (1) ,第二次出栈得到的元素是 (2) ;类似地,考虑对这四个
数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队
得到的元素是 (3) ,第二次出队得到的元素是 (4) 。经操作后,最后在栈中或
队中的元素还有 (5) 个。
(1)( ) A、a1 B、a2 C、a3 D、a4
(2)( ) A、a1 B、a2 C、a3 D、a4
(3)( ) A、a1 B、a2 C、a3 D、a4
(4)( ) A、a1 B、a2 C、a3 D、a4
(5)( ) A、1 B、2 C、3 D、0
4. 栈是一种线性表,它的特点是 (1) 。设用一维数组 A[1,…,n]来表示一个栈,
A[n]为栈底,用整型变量 T 指示当前栈顶位置,A[T]为栈顶元素。往栈中推入(PUSH)一个
新元素时,变量 T 的值 (2) ;从栈中弹出(POP)一个元素时,变量 T 的值 (3) 。
设栈空时,有输入序列 a,b,c,经过 PUSH,POP,PUSH,PUSH,POP 操作后,从栈中弹出的
元素的序列是 (4) ,变量 T 的值是 (5) 。
供选择的答案:
(1)( ) A.先进先出 B 后进先出 C 进优于出 D 出优于进 E随机
进出
(2)( )A. 加1 B.减 1 C.不变 D.清 0 E. 加2 F.减 2
(3)( )A. 加1 B.减 1 C.不变 D.清 0 E. 加2 F.减 2
(4)( )A. a,b B. b,c C. c,a D. b,a E. c,b F.
a,c
(5)( )A. n+1 B. n+2 C.n D.n-1 E.n-2
5. 在做进栈运算时,应先判别栈是否 (1) ;在做退栈运算时,应先判别栈是否
(2) 。当栈中元素为 n 个,做进栈运算时发生上溢,则说明该栈的最大容量为 (3) 。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,
应将两栈的 (4) 分别设在这片内存空间的两端,这样,只有当 (5) 时,才产生
上溢。
供选择的答案:
(1)( ) A、空 B、满 C、上溢 D、下溢
(2)( ) A、空 B、满 C、上溢 D、下溢
(3)( ) A、n-1 B、n C、n+1 D、n/2
(4)( ) A、长度 B、深度 C、栈顶 D、栈底
(5)( )A、两个栈的栈顶同时到达栈空间的中心点
B、其中一个栈的栈顶到达栈空间的中心点
C、两个栈的栈顶在达栈空间的某一位置相遇
D、两个栈均不空,且一个栈的栈顶到达另一个栈的栈底
6.一个栈的入栈序列是1,2,3,4,5,则栈的不可能输出序列是( )。
A.3,5,4,2,1
B.3,2,4,5,1
C.1,2,3,4,5
D.5,4,3,1,2
7.一个队列的入队序列是1,3,5,7,9,则出队的输出序列只能是( )
A.9,7,5,3,1
B.1,3,5,7,9
C.1,5,9,3,7
D.9,5,1,7,3
8.设循环队列中数组的下标范围是 1~n,其头尾指针分别为 f 和 r,则其元素个数为
( )
A.r-f B. r-f+1 C. (r-f)% n+1 D. (r-f+n)% n
9.设数组 data[m]作为循环队列 SQ 的存储空间,front 为队头指针,rear 为队尾指针,
则执行入队操作后其尾指针 rear 值为( )
A. rear=rear+1 B. rear=(rear-1)%m
C. rear=(rear+1)%(m-1) D. rear=(rear+1)%m
10.递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结
构。
A.队列 B.多维数组 C.栈 D. 线性表
11.若用大小为 6 的数组来实现循环队列,且当前 front 和 rear 的值分别为 0 和 4。
当从队列中删除两个元素,再加入两个元素后,front 和 rear 的值分别为多少?( )
A.2和 6
B.2和 0
C.6和 2
D.2和 2
12. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 。不允许插入和
删除运算的一端称为 。
13. 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的
线性表。
14. 在具有 n 个单元的循环队列中,队满时共有 个元素。
参考答案:
1.B 2.D
3.B D A B B
4.B B A F D
5.B A B D C
6.D 7.B 8.D 9.D 10.C
11.B 12.栈顶、栈底 13.队列 14.n-1