数据结构-测试4

本文主要介绍了线性表(包括栈和队列)的结构、特性和操作,如顺序存储与链式存储的区别,以及二叉树的性质,如度、遍历顺序和生长特性。还涵盖了时间复杂度的概念和应用,以及数据结构中的一些基本概念,如哈夫曼编码和数据操作的效率分析。
摘要由CSDN通过智能技术生成

一、判断题

1.队列结构的顺序存储会产生假溢出现象。 (T)

2.度为二的树就是二叉树。(F)

二叉树的度可以小于等于2

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

栈和队列的共同特点是:都是操作受限定的线性表,且操作的位置限制在表的端点

双端队列:1.一个端点允许插入和删除,另一个端点只允许插入;

                  2.一个端点允许插入和删除,另一个端点只允许删除

队列:先进先出   只允许在表的一端插入元素,而在表的另一端删除元素

栈:先进后出       将线性表的插入和删除操作限制为仅在表的一端进行

4. N^2(logN)和Nlog(N^2)具有相同的增长速度。(F)

5.某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。(T)

前序遍历:根 左 右

中序遍历:左 根 右

6.算法可以没有输入,但是必须有输出。(T).

7.对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。(T)

链式存储:访问节点 o(N)             删除、增加结点O(1)

8. 若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。(F)

中序遍历:ba

前序遍历:ab

所以可以反驳上述问题

9. 在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。(F)

链表中,访问结点o(n),增加结点o(1)

10. 完全二叉树中,若一个结点没有左孩子,则它必是树叶。(T)

完全二叉树:

1.叶子结点只可能出现在最后两层

2.度为1的结点个数为0或1

 

11. 将一棵完全二叉树存于数组中(根结点的下标为1)。则下标为23和24的两个结点是兄弟。(F)

二、单选题 

1.(neuDS)若将整数1、2、3、4依次进栈,则不可能得到的出栈序列是( D)。

A.1324

B.1234

C.4321

D.1423

栈:先进后出 

A.1进1出,2进,3进3出,2出,4进4出  1 3 2 4

B.1进1出,2进2出,3进3出,4进4出      1 2 3 4

C.1进2进3进4进4出3出2出1出                 4 3 2 1

D.1进1出2进3进4进 4出3出 2出                1  4 3 2

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

A.字符串

B.栈

C.树

D.队

树和图为非线性数据结构

 3.一棵有 1001 个结点的完全二叉树,其叶子结点数为 ▁D▁▁▁▁ 。

A.500

B.250

C.254

D.501

2n-1=1001   n=1002/2=501

4.在下列存储形式中,(B )不是树的存储形式。

A.孩子兄弟表示法

B.顺序存储表示法

C.双亲表示法

D.孩子链表表示法

树的先根遍历等价于二叉树的前序遍历

树的后跟遍历等价于二叉树的中序遍历

树的主要存储方法有:双亲表示法(顺序存储)、孩子表示法(孩子链表)、孩子兄弟表示法(树的二叉表示法、二叉链表表示法)

5、 下列函数中,哪两个函数具有相同的增长速度:(B)

A.N^2(logN)和N(log(N^2))

B.Nlog(N^2)和NlogN

C.N和2/N

D.2^N和N^N

2Nlog(N)   NlogN

2logN  ~logN

倍数为相差,所以增长速度可以相当于同等

6. 已知字符集{ a, b, c, d, e, f, g, h }。若各字符的哈夫曼编码依次是 0100, 10, 0000, 0101, 001, 011, 11, 0001,则编码序列 0100011001001011110101 的译码结果是:(A)

A.afeefgd

B.acgabfh

C.adbagbb

D.afbeagd

0100(a)011(f)001(e)001(e)011(f)11(g)0101(d)

7. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?(A)

A.仅有尾指针的单循环链表

B.单链表

C.仅有头指针的单循环链表

D.双链表

A、B、C:单链表只能单向遍历,只能由链表头向链表尾遍历,因此要找到最后一个元素必须遍历整个表;
D:要插入结点,只要改变一下指针即可,要删除头结点,只要将指针移动到头结点即可

8.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(D)最节省时间。

A.单链表
B.单循环链表
C.带尾指针的单循环链表
D.带头结点的双循环链表

在链表的末尾插入结点或删除尾结点时,需要修改其相邻结点的指针域,因此需要寻找尾结点和尾结点的前驱节点。
A、B:对于单链表或单循环链表,寻找尾结点的时间复杂度均为O(n);
C :对于带尾指针的单循环链表,可以直接通过尾指针定位到尾结点进行插入,时间复杂度为O(1),但在删除时还是需要遍历表来找到尾结点的直接前驱结点,时间复杂度为O(n);
D:对于带头结点的双循环链表,可以通过时间复杂度O(1)直接定位到尾结点或尾结点的前驱节点

9. 数据结构中,与所使用的计算机无关的是数据的(B逻辑 ) 结构。

A.逻辑和存储

B.逻辑

C.物理

D.存储

数据结构:逻辑结构和存储结构(物理结构)

逻辑结构从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的

10. 在具有N个结点的单链表中,实现下列哪个操作,其算法的时间复杂度是O(N)?(B)

A.删除地址为p的结点的后继结点

B.遍历链表和求链表的第i个结点

C.在地址为p的结点之后插入一个结点

D.删除开始结点

链表:遍历或者访问为o(n)

11. 在双向循环链表结点p之后插入s的语句是:(A)

A.s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;

B.p->next=s; s->prior=p; p->next->prior=s ; s->next=p->next;

C.s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;

D.p->next->prior=s; p->next=s; s->prior=p; s->next=p->next;

12.算法分析的目的是( A)。

A.分析算法的效率以求改进

B.研究算法中的输入和输出的关系

C.找出数据结构的合理性

D.分析算法的可读性和简明性

算法分析的目的,是分析算法的效率以求改进

13. 在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行(D)

A.s->next=p; p->next=s;

B.p->next=s; s->next=p;

C.s->next=p->next; p=s;

D.s->next=p->next; p->next=s;

14.用数组表示线性表的优点是(A)。

A.便于随机存取

B.便于插入和删除操作

C.不需要占用一片相邻的存储空间

D.可以动态地分配存储空间

用数组表示线性表的优点:随机存取

15.哈夫曼树是n个带权叶子结点构成的所有二叉树中(B)最小的二叉树。

A.权值

B.带权路径长度

C.高度

D.度

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

A.堆栈

B.图

C.队列

D.树

这里系统输入缓冲区采用了循环队列,队列的特性保证了输入字符先输入,先保存,先处理的要求,这里的循环结构又有效地限制了缓冲区的大小,并避免了假溢出的问题。

17. 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(D )。

A.100

B.110

C.108

D.105

18.若一棵二叉树有126个结点,在第7层(根结点在第1层)至多有(B )个结点。

A.不存在第7层

B.63

C.64

D.32

1+2+4+8+16+32+64(2^6)=127>126   64-1=63

19.在任何一棵二叉树中,若结点a有左孩子b、右孩子c,则在结点的先序序列、中序序列、后序序列中,( D)。

A.结点a一定在结点c的前面

B.结点b一定在结点a的前面

C.结点a一定在结点b的前面

D.结点b一定在结点c的前面

先序:abc   中序:abc  后序:bca

20. 在数据结构中,从逻辑上可以把数据结构分成( C)。

A.动态结构和静态结构

B.紧凑结构和非紧凑结构

C.线性结构和非线性结构

D.内部结构和外部结构

21.二叉树中第5层(根的层号为1)上的结点个数最多为:(B)

A.8

B.16

C.32

D.15

2^4=16

22.栈和队列的共同点是(C )。

A.都是先进先出

B.没有共同点

C.只允许在端点处插入和删除元素

D.都是先进后出

23.能在O(1)时间内访问线性表的第i个元素的结构是(C)。

A.双向链表

B.单向循环链表

C.顺序表

D.单链表

E.替换为错误项

24.链表的适用场合

线性表在 ▁▁▁▁▁ 情况下适合采用链式存储结构。(B)

A.线性表中数据元素的值需经常修改

B.线性表需经常插入或删除数据元素

C.线性表包含大量的数据元素

D.线性表的数据元素包含大量的数据项

25.按照二叉树定义,具有3个结点的二叉树共有(A)种形态。

A.5

B.4

C.6

D.3

26.下面代码段的时间复杂度是(D)。

A.O(log2​n)

B.O(1)

C.O(n)

D.O(n2)

两层长度为n的for循环

27. 一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为(C)个。

A.47

B.15

C.16

D.17

双分支节点即度为2的节点数,叶子结点=度为2的结点数+1=15+1=16

 28.链表具备的特点是​(C )。

A.插入删除不需要移动元素

B.所需空间与其长度成正比

C.可随机访问任一结点替换为错误项

D.不必事先估计存储空间

随机存取为线性表的优点

29. 线性表、堆栈、队列的主要区别是什么?(B)

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

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

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

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

30.如果二叉树的后序遍历结果是FDEBGCA,中序遍历结果是FDBEACG,那么该二叉树的前序遍历结果是什么?(D)

A.ABDFEGC

B.ABCDEFG

C.ABDEFCG

D.ABDFECG

前序遍历:根 左 右

A    BDF E   CG  

31. 在存储数据时,通常不仅要存储各数据元素的值,而且还要存储( A数据元素之间的关系)。

A.数据元素之间的关系

B.数据的存储方法

C.数据元素的类型

D.数据的处理方法

存储数据时,不仅要存储数据元素的值,还要存储数据元素之间的关系,在顺序存储结构中,数据元素之间的关系是通过物理位置来体现的;在链式存储结构中,数据元素之间的关系是通过结点的指针来体现的

32. 先序遍历图示二叉树的结果为(D)

A.H,I,D,B,E,F,G,A,C

B.H,D,I,B,E,A,F,C,G

C.A,B,C,D,H,E,I,F,G

D.A,B,D,H,I,E,C,F,G

A     BDHI  E  CFG

                                     

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

 

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值