PTA 第三章 栈与队列

一、判断题

1.若一个栈的输入序列为1,2,3,……,N,输出序列的第一个元素为i,则第j个输出的元素是j-i-1    (×)解析:应该是不确定的,不能保证数字出栈后不会再入栈

2.所谓“循环队列”是指用单向循环链表或者循环数组表示的队列    (×)解析:循环队列指的是后者,用数组表示的队列,利用求余数运算使得头尾相接

3.在对不带头结点的链队列做出队操作时,不会改变头指针的值    (×)解析:会改变头指针的值,变成相连指针的值

4.不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”的情况    (√)解析:因为存储空间是有限的

5.队列和栈都是运算受限的线性表,只允许在表的两端进行运算    (×)解析:前半句对,后半句中栈只能在一段进行操作,只有队列才是在两端进行操作

6.栈和队列的存储方式,既可以是顺序方式,也可以是链式方式    (√)

7.循环队列也存在着空间溢出问题    (√)解析:循环队列的存储空间也是有限的

8.循环队列执行出队操作时会引起大量元素的移动    (×)

9.栈是插入和删除只能在一端进行的线性表;队列是插入在一端进行,删除在另一端进行的线性表    (√)

10.在n个元素连续进栈以后,他们的出栈顺序和进栈顺序一定正好相反    (√)

11.环形队列中有多少个元素可以根据队首指针和队尾指针的值来计算    (√)

12.栈和队列的插入和删除操作特殊,所以,栈和队列是非线性结构    (×)

13.序列{1,2,3,4,5}依次入栈,则不可能得到{3,4,1,2,5}的出栈序列    (√)

14.队列中允许插入的一端叫队头,允许删除的一端叫队尾     (×)解析:正好相反,允许插入的一端叫队尾,允许删除的一端叫队头,前头后尾

二、单选题

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

    A.2和0

    B.2和2

    C.2和4

    D.2和6

解析:初始化创建空队列时,令front=rear=0,每当插入新的队列尾元素时,rear增1,每当删除一个队列首元素时,front增1。则删除一个,front++,增加一个rear++

2-2.如果循环队列用大小为m的数组表示,且用队头指针front和队列元素个数size代替一般循环队列中的front和rear指针来表示队列的范围,那么这样的循环队列可以容纳的元素个数最多为:

    A.m-1

    B.m

    C.m+1

    D.不能确定

2-3.以下数据结构中,()是非线性数据结构。

    A.树

    B.字符串

    C.队列

    D.栈

2-4.设栈S和队列Q的初始状态均为空,元素{1,2,3,4,5,6,7}依次进入栈S。若每个元素出栈后立即进入队列Q,且七个元素出队的顺序是{2,5,6,4,7,3,1},则栈S的容量至少是:

    A.1

    B.2

    C.3

    D.4

2-5.线性表、堆栈、队列的主要区别是什么?

    A.线性表用指针,堆栈和队列用数组

    B.堆栈和队列都是插入、删除收到约束的线性表

    C.线性表和队列都可以用循环链表实现,但堆栈不能

    D.堆栈和队列都不是线性结构,而线性表是

解析:A中它们都可以用指针和数组,C中线性表不可以用循环列表实现,D中线性表是线性结构

 

posted @ 2021-04-25 15:26  bonel  阅读(2123)  评论(0编辑  收藏  举报