第3章栈和队列
1.选择题
(1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。
A.5,4,3,2,1B.2,1,5,4,3C.4,3,1,2,5D.2,3,5,4,1
答案:C
解释:栈是后进先出的线性表,不难发现C选项中元素1比元素2先出栈,违背了栈的
后进先出原则,所以不可能出现C选项所示的情况。
(2)若已知一个栈的入栈序列是1,2,3,…,
,其输出序列为p1,p2,p3,…,p
,若
p1
,则pi为()。
A.i
B.
i
C.
i1
D.不确定
答案:C
解释:栈是后进先出的线性表,一个栈的入栈序列是1,2,3,…,
,而输出序列的第一个元素为
,说明1,2,3,…,
一次性全部进栈,再进行输出,所以p1
,p2
1,…,pi
i1。
(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。
A.rf
B.
fr
C.
rf
D.(
rf
答案:D解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值
可能为负数,所以需要将差值加上MAXSIZE(本题为
),然后与MAXSIZE(本题为
)求余,即(
rf
。
(4)链式栈结点为:datali
k,top指向栈顶若想摘除栈顶结点,并将删除结点的值保存
到x中则应执行操作()。
A.xtopdatatoptopli
k;
B.toptopli
kxtopli
k;
C.xtoptoptopli
k;
D.xtopli
k;
答案:A
解释:xtopdata将结点的值保存到x中,toptopli
k栈顶指针指向栈顶下一结点,即
摘除栈顶结点。
(5)设有一个递归算法如下i
tfacti
t
大于等于0
if
0retur
1
elseretur
fact
1
则计算fact
需要调用该函数的次数为()。
A.
1
B.
1
C.
D.
2
答案:A
解释:特殊值法。设
0,易知仅调用一次fact
函数,故选A。
(6)栈在()中有所应用。
A.递归调用
B.函数调用
C.表达式求值
D.前三个选项都有
答案:D解释:递归调用、函数调用、表达式求值均用到了栈的后进先出性质。
f(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将
要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构
应该是()。
A.队列
B.栈
C.线性表
D.有序表
答案:A
解释:解决缓冲区问题应利用一种先进先出的线性表,而队列正是一种先进先出的线性表。
(8)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一
个元素出栈后即进入Q,r