1算法与数据结构(部分题目)

  1. 下面叙述正确的是()。
  1. 算法的执行效率与数据的存储结构无关
  2. 空间复杂度是指算法程序中指令(或语句)的条数
  3. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
  4. 以上三种描述都不对

参考答案:C

试题评析:

算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限步骤以后结束。

  1. 以下数据结构中不属于线性数据结构的是()。
  1. 队列
  2. 线性表
  3. 二叉树

参考答案:C

试题评析:

线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out);队列可看做是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。队列中,只能删除队头元素,队列的最后一个元素一定是最先入队的元素,因此队列又称先进先出表(First In First Out)。

  1. 在一棵二叉树上第五层的结点数最多是()。
  1. 8
  2. 16
  3. 32
  4. 15

参考答案:B

试题评析:

根据二叉树的性质:二叉树第i(i大于等于1)层上至多有2的(i-1)次方个结点。得到第五层的结点数最多是16。

  1. 在深度为5的满二叉树中,叶子结点的个数为()。
  1. 32
  2. 31
  3. 16
  4. 15

参考答案:C

试题评析:

在满二叉树中,每一层的结点数都达到最大值,即在满二叉树的第k层有2的(k-1)次方个结点,且深度为m的满二叉树有2的m次方个结点。

在满二叉树中,最后一层的结点个数就是叶子的结点个数,本题中深度为5,所以叶子的结点数为16.

6.在下列选项中,哪个不是一个算法一般应该具有的基本特征____。

A.确定性

B.可行性

C.无穷性

D.拥有足够的情报

参考答案:C

解析:作为一个算法,一般应该具有以下几个基本特征:

可行性

确定性

有穷性

7.希尔排序法属于哪一种类型的排序法____。

A.交换类排序法

B.插入类排序法

C.选择类排序法

D.建堆排序法

参考答案:B

希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。所以希尔排序法属于插入类排序,但它对简单插入排序做了很大的改进。

8. 下列关于队列的叙述正确的是______.

A.在队列中只能插入数据

B.在队列中只能删除数据

C.队列是先进先出的线性表

D.队列是先进后出的线性表

参考答案:C

队列是指允许一端进行插入、而在另一端进行删除的线性表。它有称为“先进先出”或“后进后出”的线性表,体现了“先来先服务”的原则。

9. 在计算机中,算法是指______。

A.查询方法

B.加工方法

C.解题方案的准确而完整的描述

D.排序方法

参考答案:C

计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。

10. 栈和队列的共同点是_____.

A.都是先进后出

B.都是先进先出

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

D.没有共同点

参考答案:C

栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。

11. 在下列几种排序方法中,要求内存量最大的是_____.

A.插入排序

B. 选择排序

C. 快速排序

D. 归并排序

正确答案:D

解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,在分别对这两部分记录继续进行排序,以达到整个序列有序,插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择序列的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。

12. 栈底至栈顶依次存放元素A、B、C、D,在五个元素E人栈前,栈中元素可以出栈,则出栈序列可能是:

A. ABCED

B. DBCEA

C. CDABE

D. DCBEA’

正确答案:D

解析:栈操作原则是“先进后出”,栈底至栈顶依次存放元素A、B、C、D,则表示这四个元素中D是最后进栈,B、C,处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

13. 线性表的顺序存储结构和线性表的链式存储结构分别是_____.

A. 顺序存取的存储结构、顺序存取的存储结构

B. 随机存取的存储结构、顺序存取的存储结构

C. 随机存取的存储结构、.随机存取的存储结构

D. 任意存取的存储结构、任意存取的存储结构

正确答案:B

解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(al)+(i-l)/L计算得到,从而实现了随机存储。对于链式存储结构,要对某节点进行存取,都得从链的头指针指向的节点开始,这是一种顺序存储的存储结构。

14. 在单链表中,增加头结点的目的是:

A. 方便运算的实现

B. 使单链表至少有一个结点

C. 标识表结点中首结点的位置

D. 说明单链表是线性表的链式存储实现

正确答案:A

解析:分结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只有掌握了表头,就能够访问整个链表,因此增加了头结点目的是为了便于运算的实现。

15. 算法分析的目的是:

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

B. 找出算法中输入和输出之间的关系

C. 分析算法的易懂性和可靠性

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

正确答案:D

解析:算法解析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度表示。分析算法的目的就是要降低算法的时间杂度和空间复杂度,提高算法的执行效率

16. n个顶点的强连通图的边数至少有_____.

A. n-1

B. n(n-1)

C. n

D. n+1

答案:C

解析:在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。

17.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是_____.

  1. 堆排序
  2. 直接插入排序
  3. 快速排序
  4. 直接选择排序

答案:B

解析:当数据表A中每个元素距其最终位置不远,说明数据表A按关键字基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少。

18.用链表表示线性表的优点是_____.

  1. 便于插入和删除操作。
  2. 数据元素的物理顺序与逻辑顺序相同。
  3. 花费的存储空间较顺序存储少
  4. 便于随机存储。

答案:A

解析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结构下的线性表便于插入和删除操作。

19.数据的存储结构是指_____.

  1. 存储在外存中的数据。
  2. 数据所占的存储空间量
  3. 数据在计算机中的顺序存储方式。
  4. 数据的逻辑结构在计算机中的表示。

答案:D

解析:本题考查的是数据结构的基本概念。

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。

20.下列关于栈的描述中错误的是_____.

  1. 栈是先进后出的线性表。
  2. 栈只能顺序存储。
  3. 栈具有记忆作用。
  4. 对栈的插入与删除操作中,不需要改变栈底指针。

答案:B

解析:本题考查的是栈和队列。

栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称先进先出表(FILO-First In Last Out)。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。

21.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_____.

A. 冒泡排序为n/2

B. 冒泡排序为n

C. 快速排序为n

D. 快速排序为n(n-1)/2

参考答案:D

试题评析:本题考查的是基本排序算法。

假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。故本题答案为D

22.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为_____.

A. log2n

B. n/2

C. n

D. n+1

参考答案:C

试题评析:本题考查的是顺序查找。

在进行顺序查找过程中,如果线性表中的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较次故本题答案为C。

23.下列数据结构中,能用二分法进行查找的是_____.

A. 顺序存储的有序线性表

B. 线性链表

C. 二又链表

D. 有序线性链表

参考答案:A

试题评析:分法查找只适用于顺序存储的有序表。

在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。故本题答案为A

24.下列关于栈的描述正确的是_____.

A. 在栈中只能插入元素而不能册除元素

B. 在栈中只能刪除元素而不能插入元素

C. 栈是特殊的线性表,只能在一端插入或刪除元素

D. 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

参考答案:C

试题评析:栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和刪除只在线性表的一端进行。故本题答案为C

25.下列叙述中正确的是_____.

A. 一个逻辑数据结构只能有一种存储结构

B. 数据的逻辑结构属于线性结构,存储结构属于非线性结构

C. 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D. 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

参考答案:D

试题评析:一般来说,一种欻据的逻辑结构根据霱要可以表示成多种存储结构,常用的存储結构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。故本题答案为D。

26. 按照“后出先进”原则组织数据的数据结构是_____.

A. 队栈

B. 栈

C. 双向链表

D. 二叉树

参考答案:B

试题评析

栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表:而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。

27. 下列描述中正确的是_____.

A. 线性链表是线性表的链式存储结构

B. 栈与队列是非线性结构

C. 双向链表是非线性结构

D. 只有根结点的二叉树是线性结构

参考答案:A

试题评析

根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1、有且只有一个根结点;2、每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

29.下列叙述中正确的是_____.

A. 一个算法的空间复杂度大,则其时间复杂度也必定大

B. 一个算法的空间复杂度大,则其时间复杂度必定小

C. 一个算法的空间复杂度大,则其空间复杂度必定小

D. 上述三种说法都不对

参考答案:D

试题评析

算法的复杂度主要包括时间复杂度和空间复杂度,算法在运行过程中需辅助存储空间的大小成为算法的空间复杂度,算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数,为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需要基本运算的执行次数来度量算法的工作量。

30.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为_____.

A. 63

B. 64

C. 6

D. 7

参考答案:B

试题评析

在进行顺序查找的过程中,如果线性表中的第一个元素就是被查找元素,则只需要做一次比较就查找成功,查找效率最高,但如果被查找的元素是线性表中的最后一个元素,或者被查找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏结果。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。

32.下列叙述中正确的是_____.

A. 算法的效率只与问题的规模有关,而与数据的存储结构无关

B. 算法的时间复杂度是指执行算法所需要的计算工作量

C. 数据的逻辑结构与存储结构一一对应的

D. 算法的时间复杂度与空间复杂度一定相关

正确答案:B

答案解析:

我们通常用时间复杂度和空间复杂度来衡量算法效率,算法的时间复杂度是指执行算法所需要的计算工作量,算法所执行的基本运算次数与问题的规模有关,而一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间,一般来说,一种数据的逻辑结构根据需要可以表示成多种储存结构。

33.下列叙述中正确的是_____.

  1. 队列属于非线性表
  2. 队列按“先进后出”原则组织数据
  3. 队列在队尾删除数据
  4. 队列按“先进先出”原则组织数据

正确答案:D

答案解析:

队列是指允许在一端进行插入、而在另一方进行删除的线性表,允许插入的一端称为队尾,允许删除的一端称为队头,它又称为“先进后出”或“先进先出”的线性表,体现了“先来先服务”的原则。

35. 某二叉树中有n个度为结点,则该二叉树中的叶子结点树为_____.

  1. n +1
  2. n-1
  3. 2n
  4. n/2

正确答案:A

答案解析:

二叉树的性质3,在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,本题中度为2的结点数为n,故叶子结点数为n+1个。

36. 冒泡排序在最坏的情况下的比较次数是_____.

  1. n(n+1)/2
  2. nlog2n
  3. n(n-1)/2
  4. n/2

正确答案 C

答案解析;冒泡排序法是一种最简单的交换类排序法,它是通过相邻数具元素的交换逐步将线性表编成有序。

假设现象表的长度为N,则在最坏的情况下,冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要比较次数为N(N-1)/2

37. 一颗二叉树中共有70个叶子结点与80个度为一的节点,则该二叉树中的总结点数为_____.

  1. 219
  2. 221
  3. 229
  4. 231

正确答案 A

答案解析:二叉树的性质3:在任意一颗二叉树中,度为0的节点(即叶子结点)总是比度为2的节点多一个。本题中度为2的节点数为70-1=69,该二叉树中的总结点数为70+80+69=219

38. 算法的又穷性是指_____.

  1. 算法程序的运行时间是有限的
  2. 算法程序所处理的数据量是有限的
  3. 算法程序的长度是有限的
  4. 算法只能被有限的用户使用

正确答案:A

答案解析:算法的有穷性,是指算法必须在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。

39. 对长度为N的线性表排序,在最坏情况下,比较次数不是N(N-1)/2的排序方法是_____.

  1. 快速排序
  2. 冒泡排序
  3. 直接插入排序
  4. 堆排序

正确答案:D

答案解析:对于长度为N的线性表,在最坏情况下快速排序所需要的比较次数为N(N-1)/2,冒泡排序所需要的比较次数为N(N-1)/2,直接插入排序所需要的比较次数为N(N-1)/2,堆排序所需要的比较次数为O(Nlog2N)

40. 一个栈的初始状态为空。先将元素1,2,3,4,5,A,B,C,D,E依次入栈,然后再依次出栈,则元素出栈的顺序是_____.

  1. 12345ABCDE
  2. EDCBA54321
  1. ABCDE12345
  2. 54321EDCBA

正确答案:B

答案解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时只能删除栈顶的元素,即刚刚被插入的元素。这表明栈的运算规则是“先进后出”或“后进先出”在栈顶进行插入运算,成为进栈或入栈,在栈顶进行删除运算,成为退栈或出栈。本题中,依次进栈,即依次插入元素1,2,3,4,5,A,B,C,D,E依次出栈即依次删除元素,根据栈“先进后出”的规则,应该以倒序出栈。即元素出栈顺序为EDCBA54321。

41. 下列叙述中正确的是_____.

  1. 循环队列中有队头和队尾两个指针,因此,循环队列是非线性结构
  2. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
  3. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
  4. 循环队列中元素的个数是由队头和队尾指针共同决定

正确答案:D

答案解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第1个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列还是属于线性结构,所以选择A是错误的。循环队列的头指针front指向队列的第一个元素的前一个位置,队尾指针rear指向队列的最后一个元素,循环队列的动态变化需要头尾指针共同反映,所以选项B、C是错误的。循环队列的长度是:(sq.rear-sq.front+maxsize)%maxsize,所以循环队列的长度是由队头和队尾指针共同决定的,所以选项D正确。

42. 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是_____.

  1. O(n)
  2. O(n2)
  3. O(log2n)
  4. O(nlog2n)

正确答案:C

答案解析:二分法检索要求线性表结点按关键值排序且以顺序方式存储。在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。二分法检索的效率比较高,设线性表有n个元素,则最多的检索次数为大于log2n的最小整数,最少的检索次数为1。

43. 下列叙述中正确的是_____.

  1. 顺序存储结构的存储一定是连续的,链式存储的存储空间不一定是连续的
  2. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
  3. 顺序存储结构能存储有序表,链式存储结构不能存储有序表
  4. 链式存储结构比顺序存储结构节省存储空间

正确答案:A

答案解析:顺序存储结构就是一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A是正确的。两者都可以存储线性的、有序的逻辑结构,所以选项B、C不正确。顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间结构,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。

44. 下列叙述中正确的是_____.

  1. 栈是“先进先出”的线性表
  2. 队列是“先进后出”的线性表
  3. 循环队列是非线性结构
  4. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

正确答案:D

答案解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称“后进先出”表,所以选项A是错误的。

队列可看作是插入在一端进行,删除在另一端的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称“先进先出”表,所以选项B是错误的。

循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。它的逻辑结构仍然是线性结构,所以选项C是错误的。

有序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以选项D是正确的。

45. 支持子程序调用的数据结构是_____.

  1. 队列
  2. 二叉树

正确答案:A

答案解析:栈是一种只能是在一端进行插入或删除操作的线性表。在主程序调用子程序时要首先保存主程序当前的状态,然后去执行子程序,最终把子程序的执行结果返回到主程序调用的位置,继续向下执行。这种调用符合栈“先进后出”的功能。

46. 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是_____.

A. 10

B. 8

C. 6

D. 4

正确答案:C

试题评析:在任意一颗二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

本题中度为2的结点数为5,故叶子结点数为5+1=6个。

47. 下列排序方法中,最坏情况下比较次数最少的是_____.

A.冒泡排序

B.简单选择排序

C.直接插入排序

D.堆排序

正确答案:D

试题评析:(1)冒泡排序法,是一种最简单的交换类排序发法,它是通过相邻数据的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从后往前的扫描和n/2遍的从后往前的扫描,需要比较的次数为n(n-1)/2次。

(2)简单插入排序法:在简单插入排序法中,每一次比较后最多移掉一个逆序,因此这种排序方法的效率与冒泡排序法相同。在最坏情况下,简单插入排序法需要n(n-1)/2次。

(3)简单选择排序:对于长度为n的序列,选择排序需要n-1遍,每一遍扫描均从剩下的子表中选出最小的元素,然后将该最小的元素与子表的第一个元素进行交换。简单选择排序法在最坏情况下需要比较n(n-1)/2次。

(4)堆排序法:堆排序法的方法为:①首先将一个无序序列建成堆,②然后将堆项元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。在最坏情况下,堆排序需要比较的次数为o(nlogn)。

48. 下列数据结构中,属于非线性结构的是_____.

  1. 循环队列
  2. 带链队列
  3. 二叉树
  4. 带链栈

正确答案:C

试题评析:如果一个非空的数据结构满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。本题中循环队列、带链队列和带链栈都是线性结构,二叉树是非线性结构。

49. 下列数据结构中,能够按照“先进后出”原则存取数据的是_____.

  1. 循环队列
  2. 队列
  3. 二叉树

正确答案:B

试题评析:在栈中,允许插入与删除的一端称为栈项,而不允许插入与删除的另一端称为栈底。栈项元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”’的原则组织数据。

50. 对于循环队列,下列数序中正确的是_____.

  1. 队头指针是固定不变的
  2. 队头指针一定大于队尾指针
  3. 队头指针一定小于队尾指针
  4. 队头指针可以大于队尾指针,也可以小于队尾指针

正确答案:D

试题评析:所谓循环队列,就是将队列储存空间的最后一个位置绕道第一个位置,形成逻辑上的环状空间,供队列循环使用。 在循环队列中,用队尾指针rear指向队列中的元素,用排头指针front指向排头元素的前一个位置。 循环队列主要有两种基本运算:入队运算和退队运算,每进行一次入队运算,队尾指针就进一。每进行一次退队运算,排头指针就进一。当rear或front的值等于队列的长度+1时,就将rear或front的位置为1.一般情况下,rear大于front,因为入队的元素肯定比出队的元素多。特殊情况是rear达到数组的上限之后又从数组的低端开始,此时,rear是小于front的。

51. 算法的空间复杂度是指_____.

A. 算法在执行过程中所需要的计算机存储空间

B. 算法所处理的数据量

C. 算法程序中的语句或指令条数

D. 算法在执行过程中所需要的临时工作单元数

参考答案:A

试题评析:一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

52. 下列叙述中正确的是_____.

A. 对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B. 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)

C. 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)

D. 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)

参考答案:A

试题评析:对于长度为n的有序线性表,在最坏的情况下,二分查找只需要比较log2n次,而顺序查找只需要比较n次。二分法查找只适用于顺序存储的有序表,如果采用链式存储结构,也只能用顺序查找,所以选项A正确。

53. 算法的时间复杂度是指_____.

A.设计该算法所需的工作量

B.执行该算法所需要的时间

C.算法中指令的条数

D.执行该算法所需要的基本运算次数

参考答案:D

试题评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需的基本运算的执行次数来度量算法的工作量。

54. 下列叙述中正确的是_____.

A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D.上述三种说法都不对

参考答案:C

试题评析:栈是一种特殊的线性表,这种线性表只能在固定的一段进行插入和删除操作,允许插入和删除的一段称为栈顶,另一端称为栈底,一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称“后进先出”表。

55. 下列关于栈叙述正确的是_____.

A. 栈顶元素最先能被删除

B. 栈顶元素最后才能被删除

C. 栈底元素永远不能被删除

D. 以上三种说法都不对

参考答案:A

试题评析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称为后进先出表(Last In First Out)

故本题答案为A

56. 下列叙述中正确的是_____.

A. 有一个以上根结点的数据结构不一定是非线性结构

B. 只有一个根结点的数据结构不一定是线性结构

C. 循环链表是非线性结构

D. 双向链表是非线性结构

参考答案:B

试题评析:根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型,线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:(1)有且只有一个结点(2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。有一个以上根结点的数据结构肯定是非线性结构,所以A选项是错误的。循环链表、双向链表是线性结构,所以选项C、D是错误的。故本题答案为B

57. 某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)_____.

A. 3

B. 4

C. 6

D. 7

参考答案:D

试题评析:要满足该题要求,则二叉树的每层上都只能有一个结点,否则叶子结点数定大于1。故本题答案为D

58. 下列叙述中正确的是_____.

A. 算法就是程序

B. 设计算法时只需要考虑数据结构的设计

C. 设计算法时只需要考虑结果的可靠性

D. 以上三种说法都不对

参考答案:D

试题评析:算法是指解题方案的准确而完整的描述。但算法不等于程序,也不等于计算方法。当然,程序也可以作为算法的一种描述,但程序通常还需要考虑很多与方法和分析无关的细节问题,这是因为在编写程序时要受到计算机系统运行环境的限制。通常,程序的编制不可能优于算法的设计。因此A选项不正确。作为一个算法,一般应具有可行性、确定性、有穷性、拥有足够情报四个基本特征。因此设计算法时不仅仅要考虑结果的可靠性,即不仅考虑算法结果的可行性,还要考虑步骤的确定性,时间和步骤的有穷性等。因此C选项不正确。算法是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。一个算法通常有两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。因此设计算法时不仅要考虑数据结构的设计,还要考虑数据的操作和运算以及各操作之间的执行顺序,因此B选项也不正确。故本题答案为D

59. 下列关于线性链表的叙述中,正确的是()

A. 各数据结点的储存空间可以不连续,但它们的储存顺序与逻辑顺序必须一致

B. 各数据结点的储存顺序与逻辑顺序可以不一致,但它们的储存空间必须连续

C. 进行插入和删除时,不需要移动表中的元素

D. 以上三种说法都不对

参考答案:C

试题评析:线性表的链式存储结构称为线性链表,为了适应线性表的链式存储结构,计算机存储空间被划分为一个一个小块,每一小块占若干字节,通常称这些小块为存储结点。每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存放下一个数据元素的存储序号,即指向后件的结点,称为针指域。在链式存储结构中,存储数据结构的储存空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。因此选项A、B均不正确。为了要在线性链表中插入一个新元素,首先要给该元素分配一个新的结点,以便用于储存该元素的值,然后将存放新元素的结点链接到线性表中指定的位置。在线性链表的插入过程中不发生数据无素移动的现象,只需改变有关结点的指针即可,从而提高了插入的效率。为了在线性链表中删除包含指定元素的结点,首先要在线性链表中找到这个结点,然后将要删除的结点放回到可利用栈。在线性链表中删除一个元素后,不需要移动表的数据元素,只需要改变被删元素所在结点的前一个结点的指针域即可。因此,进行插入与删除时,不需要移动表中的元素。故本题答案为C

60. 下列关于二叉树的叙述中,正确的是_____.

A. 叶子结点总是比度为2的结点少一个

B. 叶子结点总是比度为2的结点多一个

C. 叶子结点数是度为2的结点数的两倍

D. 度为2的结点数是度为1的结点数的两倍

正确答案:B

试题评析:

在任意一颗二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,因此选项A不正确。度为2的结点数跟度为1的结点数之间没有倍数关系,因此选项D也不正确。

故本题答案为B

62.下列叙述中正确的是_____.

A. 循环队列是队列的一种链式存储结构

B. 循环队列是一种逻辑结构

C. 循环队列是队列的一种顺序存储结构

D. 循环队列是非线性结构

正确答案:C

试题评析:

循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在实际应用中,队列的顺序存储结构一般采用循环队列的形式。因此,循环队列不是队列的一种链式存储结构,所以选项A不正确。循环队列是一种存储结构,因此循环队列是一种物理结构,而不是逻辑结构,所以选项B不正确。循环队列是队列的顺序存储结构,因此循环队列是线性结构,所以选项D不正确。

故本题答案为C

63.下列叙述中正确的是_____.

A. 栈是一种先进先出的线性表

B. 队列是一种后进先出的线性表

C. 栈与队列都是非线性结构

D. 栈与队列都是线性结构

正确答案:D

试题评析:

栈是一种先进后出的线性表,栈实际上也是线性表,只不过是一种特殊的线性表,所以选项A,C均不正确。队列是指允许在一端进行插入,而在另一端进行删除的线性表,队列是一种“先进先出”或“后进后出”的线性表,所以选项B也不正确。

故本题答案为D

64. 一颗二叉树共有25个结点,其中5个是叶子结点,则度为1 的结点数为_____.

A. 4

B. 16

C. 10

D. 6

正确答案:B

试题评析:

在二叉树中,度为0 的结点(即叶子结点)总是比度为2的结点多一个。根据题意叶子结点的个数为5,则度为2的结点的个数为4,而二叉树共有25个结点,则度为1的结点数为25-5-4=16.

故本题答案为B

65.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中元素个数为多少?

A. 15

B. 16

C. 20

D. 0或35

答案:D

答案解析:当front<rear时,循环队列中的元素个数为rear-front。当front>rear时,循环队列中的元素个数为N-front+rear(N为队列循环容量)。当front=rear时,循环队列中的元素个数可能为空,也可能为满。所以此答案为0或35。

66. 下列关于栈的叙述中,正确的是_____.

  1. 栈底元素一定是最后入栈的元素
  2. 栈顶元素一定是最先入栈的元素
  3. 栈操作遵循先进后出的原则
  4. 以上三种说法都不对

答案:C

答案解析:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。所以本题答案为C。

67.下列与队列结构有关联的是_____.

  1. 函数的递归调用
  2. 数组元素的引用
  3. 多重循环的执行
  4. 先到先服务的作业调度

答案:D

答案解析:队列是一种特殊的线性表。它只允许在表的一端插入,而在另一端删除。在队列中,最先进入队列的元素也最先退出队列。因此与队列结构有关联的是先到先服务的作业调度。所以本题答案为D。

68. 下列关于栈的叙述正确的是_____.

  1. 栈按“先进先出”组织数据
  2. 栈按“先进后出”组织数据
  3. 只能在栈底插入数据
  4. 不能删除数据

答案:B

答案解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端成为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素,所以栈又称“先进后出”表。所以本题答案为B。

69. 下列叙述中正确的是_____.

  1. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
  2. 循环队列中的元素个数随队头指针的变化而动态变化
  3. 循环队列中的元素个数随队尾指针的变化而动态变化
  4. 以上说法都不对

正确答案:C

70.下列叙述中正确的是_____.

A.线性表链式存储结构的存储空间一般要少于顺序存储结构

B.线性表链式存储结构与顺序存储结构的存储空间都是连续的

C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的

D.以上说法都不对

正确答案:C

苏州大学 算法与数据结构相关推荐

  1. GitHub上分享的常用算法和数据结构实现原理可视化系统

    一门编程语言入门之后,要想进阶,必须学习算法和数据结构,但是对于初学者来讲算法和数据结构和数据结构的实现原理和机制过于枯涩.抽象难懂. 这里为小伙伴们分享一个名为Algorithm Visualize ...

  2. 维基百科上的算法和数据结构链接很强大

    突然发现维基百科上的算法和数据结构比百度百科强多啦,图文并茂. 其实这个网站不错:http://www.sorting-algorithms.com 冒泡排序: bubble冒泡的意思 http:// ...

  3. GitHub标星3w+的项目,全面了解算法和数据结构知识

    作者 | 程序员小吴 来源 | 五分钟学算法(ID: CXYxiaowu) 导语:今天分享一个开源项目,里面汇总了程序员技术面试时需要了解的算法和数据结构知识,并且还提供了相应的代码,目前 GitHu ...

  4. noj数据结构稀疏矩阵的加法十字链表_一个算法毁了一款好游戏?算法和数据结构到底有多重要?...

    来源 | 异步 | 文末赠书 前段时间大火的国产游戏--<太吾绘卷>,由于创新的玩法和精良的制作一度广受好评,然而随着玩家游戏的深入和时长的积累,发现该游戏在玩的过程中游戏外的问题很多很多 ...

  5. 浅谈算法和数据结构: 五 优先级队列与堆排序

    原文:浅谈算法和数据结构: 五 优先级队列与堆排序 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏 ...

  6. java优先队列的入队函数,算法与数据结构番外(1):优先队列

    这是算法与数据结构番外系列的第一篇,这个系列未来的主要内容是补充一些与算法与数据结构相关的知识,这些知识比较零碎,同时也与正传关系密切,往往需要阅读了正传的相关内容以后,才能较好的理解这部分内容.如果 ...

  7. 算法与数据结构(2)

    算法与数据结构(2) 三年前发布过一篇算法与数据结构 https://blog.csdn.net/weixin_42209307/article/details/81122419?spm=1001.2 ...

  8. 算法与数据结构(面向对象思想)

    算法与数据结构和编程之间关系 计算机就是算法与数据结构, 当你选择搜索这类的文章的时候,你已经在翻大山了 编程就是当你翻过一座山的时候,你发现前面还有一座更高的山. LZ从事java工作一年了,最近听 ...

  9. python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单

    推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...

  10. python教材免费版-北大内部教材python版算法与数据结构PDF电子书免费下载

    自从第一台需要人们用线缆和交换机向其传达指令的电子计算机问世以来,编程已发生了巨大改变.计算机科技的革新给计算机科学家提供了越来越多的工具和平台,方便他们在社会的各个领域一显身手.高速处理器.高速网络 ...

最新文章

  1. Gartner预测:2025年,人工智能将创造200万个新增就业机会
  2. Shell tips
  3. js-innerHTML
  4. OpenCV神经网络neural network的实例(附完整代码)
  5. Java class loader调试
  6. 如何获取并分析Bluetooth HCI层Command Packet和Event Packet包
  7. 彭博社:中企游说政府否决英伟达收购Arm
  8. 在线求CR,你觉得我这段Java代码还有优化的空间吗?
  9. python 知识点怎么办_python中的小知识点
  10. Autowired,Qualifier,Spring 按名称注入bean属性
  11. delphi构造析构调用顺序
  12. [FAQ10781]如何开启与关闭adb 的认证机制(google adb secure) (adb RSA 指纹认证)
  13. 云服务器几核CPU够用
  14. 【安全知识分享】2021年安全生产月主题宣讲课件(附下载)
  15. 启动oracle时报错:PuTTY X11 proxy: unable to connect to forwarded X server: Network error:
  16. HCIA网络基础01
  17. 饥荒服务器搭建运行,《饥荒》专用服务器搭建图文教程
  18. 关于FIN_WAIT1
  19. 基于MATLAB的BPSK和QPSK调制的性能比较
  20. COMSOL案例学习(3):保温杯中的温度分布(含调用.m文件提示“matlab function is not found.“解决办法)

热门文章

  1. 关于killer网卡与win10 擦出火花 内存爆炸的原因
  2. 咸鱼Maya笔记—Maya 多边形建模
  3. wps怎么把两张图片组合_如何对word/wps中的多个图片进行组合。 专家详解
  4. UINO优锘:面向架构管理的可视化
  5. 数据库服务器虚拟内存设置
  6. 计算机电子贺卡制作圣诞节,圣诞节电子贺卡怎么制作?
  7. stm32看门狗定时器记录
  8. 外卖联盟高级API - 怎么让小程序跳转到美团小程序领红包并下单
  9. 基于PHP的华为手机商城系统(完整前后台)
  10. 单位旧计算机处理,单位出售旧电脑增值税税率是多少?