数据结构与算法--PTA第三章习题答案
一、判断
-
若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。F
-
Run the following operations on a stack S: Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S). The output sequence must be {1, 2, 3}. F
-
Given the input sequence onto a stack as {1, 2, 3, ..., N}. If the first output is i, then the j-th output must be j−i−1. F
-
If keys are pushed onto a stack in the order {1, 2, 3, 4, 5}, then it is impossible to obtain the output sequence {3, 4, 1, 2, 5}. T
-
若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 T
-
If keys are pushed onto a stack in the order
abcde
, then it's impossible to obtain the output sequencecdabe
. T -
If keys are pushed onto a stack in the order
abcde
, then it's impossible to obtain the output sequencecedab
. T -
Given that the pushing sequence of a stack is { 1, 2, ⋯, n } and popping sequence is { x1,x2,⋯,xn }. If x2=n, we can obtain n−1 different possible popping sequences. T
二、单选
-
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为: C
A.2
B.3
C.4
D.5
-
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是? D
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
-
设一个栈的输入序列是1、2、3、4、5,则下列序列中,是栈的合法输出序列的是?A
A.3 2 1 5 4
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5
-
令P代表入栈,O代表出栈。当利用堆栈求解后缀表达式
1 2 3 + * 4 –
时,堆栈操作序列是: DA.PPPOOPOO
B.PPOOPPOOPPOO
C.PPPOOPOOPPOO
D.PPPOOPOOPPOOPO
-
设一个堆栈的入栈顺序是1、2、3、4、5。若第一个出栈的元素是4,则最后一个出栈的元素必定是:D
A.1
B.3
C.5
D.1或者5
-
从栈顶指针为
ST
的链栈中删除一个结点且用X
保存被删结点的值,则执行: CA.
X= ST->data;
B.
X= ST; ST = ST->next;
C.
X= ST->data; ST = ST->next;
D.
ST = ST->next; X= ST->data;
-
若采用带头、尾指针的单向链表表示一个堆栈,那么该堆栈的栈顶指针top应该如何设置? A
A.将链表头设为top
B.将链表尾设为top
C.随便哪端作为top都可以
D.链表头、尾都不适合作为top
-
若栈采用顺序存储方式存储,现两栈共享空间
V[m]
:top[i]
代表第i
(i
=1或2)个栈的栈顶;栈1的底在V[0]
,栈2的底在V[m-1]
,则栈满的条件是: DA.
|top[2]-top[1]|==0
B.
top[1]+top[2]==m
C.
top[1]==top[2]
D.
top[1]+1==top[2]
-
下列关于栈的叙述中,错误的是: C
1.用非递归方式重写递归程序时必须使用栈
2.函数调用时,系统要用栈保存必要的信息
3.只要确定了入栈次序,即可确定出栈次序
4.栈是一种受限的线性表,允许在其两端进行操作
A.仅 1
B.仅 1、2、3
C.仅 1、3、4
D.仅 2、3、4
-
为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是? B
A.堆栈
B.队列
C.树
D.图
-
若用大小为6的数组来实现循环队列,且当前
front
和rear
的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,front
和rear
的值分别为多少?AA.2和0
B.2和2
C.2和4
D.2和6
-
如果循环队列用大小为
m
的数组表示,队头位置为front
、队列元素个数为size
,那么队尾元素位置rear
为:DA.
front+size
B.
front+size-1
C.
(front+size)%m
D.
(front+size-1)%m
-
循环顺序队列中是否可以插入下一个元素()。A
A.与队头指针和队尾指针的值有关
B.只与队尾指针的值有关,与队头指针的值无关
C.只与数组大小有关,与队首指针和队尾指针的值无关
D.与曾经进行过多少次插入操作有关
-
现有队列 Q 与栈 S,初始时 Q 中的元素依次是{ 1, 2, 3, 4, 5, 6 }(1在队头),S 为空。若允许下列3种操作:(1)出队并输出出队元素;(2)出队并将出队元素入栈;(3)出栈并输出出栈元素,则不能得到的输出序列是:C
A.1, 2, 5, 6, 4, 3
B.2, 3, 4, 5, 6, 1
C.3, 4, 5, 6, 1, 2
D.6, 5, 4, 3, 2, 1