数据结构与算法--第三章习题

数据结构与算法--PTA第三章习题答案

一、判断

  1. 若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。F

  2. 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

  3. 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

  4. 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

  5. 若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 T

  6. If keys are pushed onto a stack in the order abcde, then it's impossible to obtain the output sequence cdabe. T 

  7. If keys are pushed onto a stack in the order abcde, then it's impossible to obtain the output sequence cedab. T 

  8. 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


二、单选

  1. 假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为: C

    A.2

    B.3

    C.4

    D.5

  2. 若元素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

  3. 设一个栈的输入序列是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

  4. 令P代表入栈,O代表出栈。当利用堆栈求解后缀表达式1 2 3 + * 4 –时,堆栈操作序列是: D

    A.PPPOOPOO

    B.PPOOPPOOPPOO

    C.PPPOOPOOPPOO

    D.PPPOOPOOPPOOPO

  5. 设一个堆栈的入栈顺序是1、2、3、4、5。若第一个出栈的元素是4,则最后一个出栈的元素必定是:D

    A.1

    B.3

    C.5

    D.1或者5

  6. 从栈顶指针为ST的链栈中删除一个结点且用X保存被删结点的值,则执行: C

    A.X= ST->data;

    B.X= ST; ST = ST->next;

    C.X= ST->data; ST = ST->next;

    D.ST = ST->next; X= ST->data;

  7. 若采用带头、尾指针的单向链表表示一个堆栈,那么该堆栈的栈顶指针top应该如何设置? A

    A.将链表头设为top

    B.将链表尾设为top

    C.随便哪端作为top都可以

    D.链表头、尾都不适合作为top

  8. 若栈采用顺序存储方式存储,现两栈共享空间V[m]top[i]代表第ii=1或2)个栈的栈顶;栈1的底在V[0],栈2的底在V[m-1],则栈满的条件是: D

    A.|top[2]-top[1]|==0

    B.top[1]+top[2]==m

    C.top[1]==top[2]

    D.top[1]+1==top[2]

  9. 下列关于栈的叙述中,错误的是: C

    1.用非递归方式重写递归程序时必须使用栈

    2.函数调用时,系统要用栈保存必要的信息

    3.只要确定了入栈次序,即可确定出栈次序

    4.栈是一种受限的线性表,允许在其两端进行操作

    A.仅 1

    B.仅 1、2、3

    C.仅 1、3、4

    D.仅 2、3、4

  10. 为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是? B

    A.堆栈

    B.队列

    C.树

    D.图

  11. 若用大小为6的数组来实现循环队列,且当前frontrear的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,frontrear的值分别为多少?A

    A.2和0

    B.2和2

    C.2和4

    D.2和6

  12. 如果循环队列用大小为m的数组表示,队头位置为front、队列元素个数为size,那么队尾元素位置rear为:D

    A.front+size

    B.front+size-1

    C.(front+size)%m

    D.(front+size-1)%m

  13. 循环顺序队列中是否可以插入下一个元素()。A

    A.与队头指针和队尾指针的值有关

    B.只与队尾指针的值有关,与队头指针的值无关

    C.只与数组大小有关,与队首指针和队尾指针的值无关

    D.与曾经进行过多少次插入操作有关

  14. 现有队列 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

     

     


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java之弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值