1.(单选题,14.2 分)
数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为( )。
A.r-f
B.(n+f-r)%n
C.n+r-f
D.(n+r-f)%n
答案D
2.(单选题,14.3 分)
设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。
A.2
B.3
C.4
D.6
答案B
元素出队的序列是e2、e4、e3、e6、e5和e1,可知元素入队的序列是e2、e4、e3、e6、e5和e1,即元素出栈的序列也是e2、e4、e3、e6、e5和e1,而元素e1、e2、e3、e4、e5和e6依次进入栈,易知栈S中最多同时存在3个元素,故栈S的容量至少为3。
3.(单选题,14.3 分)
循环队列存储在数组A[0..m]中,则入队时的操作为( )。
A.rear=rear+1
B.rear=(rear+1)%(m-1)
C.rear=(rear+1)%m
D.rear=(rear+1)%(m+1)
答案D
数组A[0..m]中共含有m+1个元素,故在求模运算时应除以m+1。
4.(单选题,14.3 分)
最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是( )。
A.(rear+1)%n==front
B.rear==front
C.rear+1==front
D.(rear-l)%n==front
答案B
最大容量为n的循环队列,队满条件是(rear+1)%n==front,队空条件是rear==front。
5.(单选题,14.3 分)
栈和队列的共同点是( )。
A.都是先进先出
B. 都是先进后出
C.只允许在端点处插入和删除元素
D.没有共同点
答案C
答案解析:
栈只允许在栈顶处进行插入和删除元素,队列只允许在队尾插入元素和在队头删除元素。
6.(简答题, 14.3 分)
简述线性表、栈和队列的异同
答案 :
线性表、栈和队列的相同点是它们元素的逻辑关系都是线性关系:不同点是运算不同,线性表可以在两端和中间任何位置插入和删除元素,而栈只能在一端插入和删除元素,队列只能在一端插入元素,另一端删除元素。