程序效率是指程序的执行速度以及占用的存储空间。源程序的效率与详细设计阶段确定的算法的效率有直接的联系,算法是影响程序效率的重要因素。
在将详细设计阶段产生的算法转换成源程序代码的过程中,应考虑以下问题:
1、在编写程序前,尽可能化简有关的算术表达式和逻辑表达式。
2、仔细检查算法中的嵌套循环,尽可能将某些语句或表达式移到循环外面。
3、尽量避免使用多维数组。
4、尽量避免使用指针和复杂表达式。
5、采用快速的算术运算。
6、不要混淆数据类型,避免在表达式中出现类型混杂。
7、尽量采用整数算术表达式和布尔表达式。
8、选用等效的高效率算法。
算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。 一个算法应该具有以下五个重要的特征: 1、有穷性: 一个算法必须保证执行有限步之后结束; 2、确切性: 算法的每一步骤必须有确切的定义; 3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件; 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 计算机科学家尼克劳斯-沃思曾著过一本著名的书《数据结构十算法= 程序》,可见算法在计算机科学界与计算机应用界的地位。 [编辑本段]算法的复杂度 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 时间复杂度 算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做 T(n)=Ο(f(n)) 因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。 空间复杂度 算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。 详见百度百科词条"算法复杂度" [编辑本段]算法设计与分析的基本方法 1.递推法 递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。它把问题分成若干步,找出相邻几步的关系,从而达到目的,此方法称为递推法。 2.递归 递归指的是一个过程:函数不断引用自身,直到引用的对象已知 3.穷举搜索法 穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从众找出那些符合要求的候选解作为问题的解。 4.贪婪法 贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪婪法不要回溯。 5.分治法 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 6.动态规划法 动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。 7.迭代法 迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法。 [编辑本段]算法分类 算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法。 算法可以宏泛的分为三类: 有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。 有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。 无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。下面仅是公共基础部分的第一章(数据结构)的题的一部分(还有50多道发不上来了)
1、 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A) 快速排序 B) 冒泡排序 C) 直接插入排序 √D) 堆排序
2、下列关于栈的叙述正确的是
A) 栈按""先进先出""组织数据 √B) 栈按""先进后出""组织数据
C) 只能在栈底插入数据 D) 不能删除数据
3、算法的空间复杂度是指
√A) 算法在执行过程中所需要的计算机存储空间
B) 算法所处理的数据量
C) 算法程序中的语句或指令条数 D) 算法在执行过程中所需要的临时工作单元数
4、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
A) 10 B) 8 √C) 6 D) 4
5、 算法的有穷性是指
√A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的
C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用
6、下列叙述中正确的是
A) 算法复杂度是指算法控制结构的复杂程度
B) 算法复杂度是指设计算法的难度
C) 算法的时间复杂度是指设计算法的工作量
√D) 算法的复杂度包括时间复杂度与空间复杂度
7、下列数据结构中,属于非线性结构的是
A) 循环队列 B) 带链队列 √C) 二叉树 D) 带链栈
8、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是
A) 12345ABCDE √B) EDCBA54321 C) ABCDE12345 D) 54321EDCBA
9、下列叙述中正确的是
A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
√D) 循环队列中元素的个数是由队头指针和队尾指针共同决定
10、下列叙述中正确的是
√A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表
D) 链式存储结构比顺序存储结构节省存储空间
11、对于循环队列,下列叙述中正确的是
A) 队头指针是固定不变的 B) 队头指针一定大于队尾指针
C) 队头指针一定小于队尾指针 √D) 队头指针可以大于队尾指针,也可以小于队尾指针
12、下列排序方法中,最坏情况下比较次数最少的是
A) 冒泡排序 B) 简单选择排序 C) 直接插入排序 √D) 堆排序
13、下列叙述中正确的是
A) 栈是""先进先出""的线性表 B) 队列是""先进后出""的线性表
C) 循环队列是非线性结构 √D) 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
14、支持子程序调用的数据结构是
√A) 栈 B) 树 C) 队列 D) 二叉树
15、下列数据结构中,能够按照""先进后出""原则存取数据的是
A) 循环队列 √B) 栈 C) 队列 D) 二叉树
16、下列叙述中正确的是
A) 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
√B) 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C) 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
17、下列叙述中正确的是
A) 栈是一种先进先出的线性表 B) 队列是一种后进先出的线性表
C) 栈与队列都是非线性结构 √D) 栈与队列都是线性结构
18、一棵完全二叉树共有360个结点,则在该二叉树中度为1的结点个数为
A) 0 √B) 1 C) 180 D) 181
19、算法的时间复杂度是指
A) 设计该算法所需的工作量 B) 执行该算法所需要的时间
√C) 执行该算法时所需要的基本运算次数
D) 算法中指令的条数
20、下列关于栈叙述正确的是
√A) 栈顶元素最先能被删除 B) 栈顶元素最后才能被删除
C) 栈底元素永远不能被删除
21、下列叙述中正确的是
A) 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B) 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
√C) 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
22、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点
在第1层)
A) 3 B) 4 C) 6 √D) 7
23、设循环队列存储空间为Q(1:50),初始状态为front=rear=50。经过一系列入队和退队 *** 作后,front=rear=25,则该循环队列中元素个数为
A) 26 B) 25 C) 24 √D) 0或50
24、下列叙述中正确的是
A) 算法就是程序 B) 设计算法时只需要考虑数据结构的设计C) 设计算法时只需要考虑结果的可靠性√D) 以上三种说法都不对
25、下列叙述中正确的是
A) 有一个以上根结点的数据结构不一定是非线性结构
√B) 只有一个根结点的数据结构不一定是线性结构
C) 循环链表是非线性结构 D) 双向链表是非线性结构
26、下列关于二叉树的叙述中,正确的是
A) 叶子结点总是比度为2的结点少一个
√B) 叶子结点总是比度为2的结点多一个
C) 叶子结点数是度为2的结点数的两倍
D) 度为2的结点数是度为1的结点数的两倍
27、下列各组的排序方法中,最坏情况下比较次数相同的是
√A) 冒泡排序与快速排序 B) 简单插入排序与希尔排序
C) 堆排序与希尔排序 D) 快速排序与希尔排序
28、下列叙述中正确的是
A) 循环队列是队列的一种链式存储结构
√B) 循环队列是队列的一种顺序存储结构
C) 循环队列是非线性结构 D) 循环队列是一种逻辑结构
29、下列关于线性链表的叙述中,正确的是
A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B) 各数据结点的'存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
√C) 进行插入与删除时,不需要移动表中的元素
30、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为
√A) 16 B) 10 C) 6 D) 4
31、设循环队列存储空间为Q(1:50)。初始状态为front=rear=50。经过一系列入队和退队 *** 作后,front=14,rear=19,则该循环队列中的元素个数为
A) 46 B) 45 C) 6 √D) 5
32、下列链表中,其逻辑结构属于非线性结构的是
√A) 二叉链表 B) 循环链表 C) 双向链表 D) 带链的栈
33、设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为
A) 15 B) 16 C) 20 √D) 0或35
34、下列关于栈的叙述中,正确的是
A) 栈底元素一定是最后入栈的元素 B) 栈顶元素一定是最先入栈的元素
√C) 栈 *** 作遵循先进后出的原则
35、设二叉树共有150个结点,其中度为1的结点有10个,则该二叉树中的叶子结点数为
A) 71 B) 70 C) 69 √D) 不可能有这样的二叉树
36、下列叙述中正确的是
√A) 程序执行的效率与数据的存储结构密切相关
B) 程序执行的效率只取决于程序的控制结构
C) 程序执行的效率只取决于所处理的数据量
37、下列与队列结构有关联的是
A) 函数的递归调用 B) 数组元素的引用 C) 多重循环的执行 √D) 先到先服务的作业调度
38、一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是
A) 1,2,3,A,B,C B) C,B,A,1,2,3 √C) C,B,A,3,2,1 D) 1,2,3,C,B,A
39、下列叙述中正确的是
A) 一个算法的空间复杂度大,则其时间复杂度也必定大
B) 一个算法的空间复杂度大,则其时间复杂度必定小
C) 一个算法的时间复杂度大,则其空间复杂度必定小
√D) 算法的时间复杂度与空间复杂度没有直接关系
40、下列叙述中正确的是
√A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B) 循环队列中的元素个数随队头指针的变化而动态变化
C) 循环队列中的元素个数随队尾指针的变化而动态变化
41、一棵二叉树中,共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为
A) 219 √B) 229 C) 230 D) 231
42、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为
A) 9 B) 10 √C) 45 D) 90
43、下列叙述中正确的是
A) 算法的效率只与问题的规模有关,而与数据的存储结构无关
√B) 算法的时间复杂度是指执行算法所需要的计算工作量
C) 数据的逻辑结构与存储结构是一一对应的
D) 算法的时间复杂度与空间复杂度一定相关
44、下列叙述中正确的是
A) 线性表链式存储结构的存储空间一般要少于顺序存储结构
B) 线性表链式存储结构与顺序存储结构的存储空间都是连续的
√C) 线性表链式存储结构的存储空间可以是连续的,也可以是不连续的
45、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)
A) 3 B) 6 C) 8 √D) 12
46、对长度为n的线性表作快速排序,在最坏情况下,比较次数为
A) n B) n-1 C) n(n-1) √D) n(n-1)/2
47、下列叙述中正确的是
A) 有且只有一个根结点的数据结构一定是线性结构
B) 每一个结点最多有一个前件也最多有一个后件的数据结构一定是线性结构
C) 有且只有一个根结点的数据结构一定是非线性结构
√D) 有且只有一个根结点的数据结构可能是线性结构,也可能是非线性结构
48、下列叙述中错误的是
A) 在双向链表中,可以从任何一个结点开始直接遍历到所有结点
B) 在循环链表中,可以从任何一个结点开始直接遍历到所有结点
√C) 在线性单链表中,可以从任何一个结点开始直接遍历到所有结点
D) 在二叉链表中,可以从根结点开始遍历到所有结点
49、某二叉树共有13个结点,其中有4个度为1的结点,则叶子结点数为
√A) 5 B) 4 C) 3 D) 2
50、设栈的顺序存储空间为S(1: 50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为
A) 30 B) 29 √C) 20 D) 19
51、下列叙述中正确的是
A) 栈与队列都只能顺序存储 √B) 循环队列是队列的顺序存储结构
C) 循环链表是循环队列的链式存储结构
52、设某二叉树的前序序列为ABC,中序序列为CBA,则该二叉树的后序序列为
A) BCA √B) CBA C) ABC D) CAB
53、下列排序方法中,最坏情况下时间复杂度最小的是
A) 冒泡排序 B) 快速排序 √C) 堆排序 D) 直接插入排序
54、为了对有序表进行对分查找,则要求有序表
√A) 只能顺序存储 B) 只能链式存储 C) 可以顺序存储也可以链式存储D) 任何存储方式
55、设某二叉树的后序序列为CBA,中序序列为ABC,则该二叉树的前序序列为
A) BCA B) CBA √C) ABC D) CAB
56、下列叙述中正确的是
A) 存储空间不连续的所有链表一定是非线性结构
B) 结点中有多个指针域的所有链表一定是非线性结构
C) 能顺序存储的数据结构一定是线性结构
√D) 带链的栈与队列是线性结构
57、算法时间复杂度的度量方法是
A) 算法程序的长度 √B) 执行算法所需要的基本运算次数C) 执行算法所需要的所有运算次数D) 执行算法所需要的时间
58、设循环队列为Q(1: m),初始状态为front=rear=m。现经过一系列的入队与退队运算后,front=rear=1,则该循环队列中的元素个数为
A) 1 B) 2 C) m-1 √D) 0或m
59、在最坏情况下
A) 快速排序的时间复杂度比冒泡排序的时间复杂度要小
B) 快速排序的时间复杂度比希尔排序的时间复杂度要小
√C) 希尔排序的时间复杂度比直接插入排序的时间复杂度要小
D) 快速排序的时间复杂度与希尔排序的时间复杂度是一样的
60、在深度为7的满二叉树中,度为2的结点个数为
A) 64 √B) 63 C) 32 D) 31
61、设栈的顺序存储空间为S(1: m),初始状态为top=m+1。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为
A) 30 B) 20 √C) m-19 D) m-20
62、算法空间复杂度的度量方法是
A) 算法程序的长度 B) 算法所处理的数据量C) 执行算法所需要的工作单元√D) 执行算法所需要的存储空间
63、设循环队列为Q(1: m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为
√A) 4 B) 6 C) m-5 D) m-6
64、下列叙述中正确的是
A) 循环队列属于队列的链式存储结构B) 双向链表是二叉树的链式存储结构
C) 非线性结构只能采用链式存储结构√D) 有的非线性结构也可以采用顺序存储结构
65、某二叉树中有n个叶子结点,则该二叉树中度为2的结点数为
A) n+1 √B) n-1 C) 2n D) n/2
66、下列叙述中错误的是
A) 算法的时间复杂度与算法所处理数据的存储结构有直接关系
B) 算法的空间复杂度与算法所处理数据的存储结构有直接关系
√C) 算法的时间复杂度与空间复杂度有直接关系
67、设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为
A) 30 B) 29 √C) 20 D) 19
68、某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的深度(根结点在第1层)为
A) 2 B) 3 √C) 4 D) 5
69、下列叙述中正确的是
A) 存储空间连续的数据结构一定是线性结构
B) 存储空间不连续的数据结构一定是非线性结构
C) 没有根结点的非空数据结构一定是线性结构
√D) 具有两个根结点的数据结构一定是非线性结构
70、下列叙述中正确的是
A) 带链队列的存储空间可以不连续,但队头指针必须大于队尾指针
B) 带链队列的存储空间可以不连续,但队头指针必须小于队尾指针
√C) 带链队列的存储空间可以不连续,且队头指针可以大于也可以小于队尾指针
71、设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为
A) 5 B) 6 C) m-5 √D) m-6
72、某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为
A) EFGDCBA B) DCBEFGA C) BCDGFEA √D) DCBGFEA
73、下列叙述中正确的是
A) 在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构
√B) 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构
C) 在链表中,如果每个结点有两个指针域,则该链表一定是线性结构
D) 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构
74、下列叙述中错误的是
A) 在带链队列中,队头指针和队尾指针都是在动态变化的
√B) 在带链栈中,栈顶指针和栈底指针都是在动态变化的
C) 在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的
75、设数据元素的集合D={ 1,2,3,4,5 },则满足下列关系R的数据结构中为线性结构的是
A) R={ (1,2), (3,4), (5,1) } √B) R={ (1,3), (4,1), (3,2), (5,4) }
C) R={ (1,2), (2,3), (4,5) } D) R={ (1,3), (2,4), (3,5) }
76、下列叙述中正确的是
√A) 链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构
B) 线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针
C) 线性表的链式存储结构中,每个结点只能有一个指向后件的指针
D) 线性表的链式存储结构中,叶子结点的指针只能是空
77、一个栈的初始状态为空,现将元素A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为
A) ABC B) CBA √C) EDC D) CDE
78、某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为
A) 5 √B) 4 C) 3 D) 2
79、下列叙述中正确的是
A) 所谓算法就是计算方法 √B) 程序可以作为算法的一种描述方法
C) 算法设计只需考虑得到计算结果 D) 算法设计可以忽略算法的运算时间
80、下列各序列中不是堆的是
A) (91,85,53,36,47,30,24,12) B) (91,85,53,47,36,30,24,12)
√C) (47,91,53,85,30,12,24,36) D) (91,85,53,47,30,12,24,36)
81、深度为5的完全二叉树的结点数不可能是
√A) 15 B) 16 C) 17 D) 18
82、下列叙述中正确的是
√A) 循环队列是顺序存储结构 B) 循环队列是链式存储结构
C) 循环队列是非线性结构 D) 循环队列的插入运算不会发生溢出现象
83、下列叙述中正确的是
A) 所有数据结构必须有根结点 B) 所有数据结构必须有终端结点(即叶子结点)
C) 只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
√D) 没有根结点或没有叶子结点的数据结构一定是非线性结构
84、下列关于算法的描述中错误的是
A) 算法强调动态的执行过程,不同于静态的计算公式
B) 算法必须能在有限个步骤之后终止
C) 算法设计必须考虑算法的复杂度 √D) 算法的优劣取决于运行算法程序的环境
85、线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有
A) 节省存储空间 √B) 插入与删除运算效率高C) 便于查找 D) 排序时减少元素的比较次数
86、深度为7的完全二叉树中,共有125个结点,则该完全二叉树中的叶子结点数为
A) 62 √B) 63 C) 64 D) 65
87、下列叙述中正确的是
A) 所谓有序表是指在顺序存储空间内连续存放的元素序列
B) 有序表只能顺序存储在连续的存储空间内
√C) 有序表可以用链接存储方式存储在不连续的存储空间内
D) 任何存储方式的有序表均能采用二分法进行查找
88、下列叙述中正确的是
A) 结点中具有两个指针域的链表一定是二叉链表
√B) 结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构
C) 二叉树只能采用链式存储结构 D) 循环链表是非线性结构
89、设某二叉树中,共有140个结点,其中有40个度为1的结点。则
A) 该二叉树中有51个叶子结点 B) 该二叉树中有50个叶子结点
C) 该二叉树中有51个度为2的结点 D) 该二叉树中有50个度为2的结点
√E) 不可能有这样的二叉树
90、带链的栈与顺序存储的栈相比,其优点是
A) 入栈与退栈 *** 作方便 B) 可以省略栈底指针
√C) 入栈 *** 作时不会受栈存储空间的限制而发生溢出
91、某二叉树的前序序列为ABCD,中序序列为DCBA,则后序序列为
A) BADC √B) DCBA C) CDAB D) ABCD
92、下列关于算法复杂度叙述正确的是
A) 最坏情况下的时间复杂度一定高于平均情况的时间复杂度
√B) 时间复杂度与所用的计算工具无关
C) 对同一个问题,采用不同的算法,则它们的时间复杂度是相同的
D) 时间复杂度与采用的算法描述语言有关
93、设有栈S和队列Q,初始状态均为空。首先依次将A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为
A) DEFXYZABC √B) FEDZYXCBA C) FEDXYZCBA D) DEFZYXABC
94、下列叙述中正确的是
A) 有两个指针域的链表称为二叉链表B) 循环链表是循环队列的链式存储结构
C) 带链的栈有栈顶指针和栈底指针,因此又称为双重链表
√D) 结点中具有多个指针域的链表称为多重链表
95、某二叉树共有845个结点,其中叶子结点有45个,则度为1的结点数为
A) 400 B) 754 √C) 756 D) 不确定
96、设数据集合为D={ 1,3,5,7,9 },D上的关系为R,下列数据结构B=(D,R)中为非线性结构的是
A) R={ (5,1), (7,9), (1,7), (9,3) }
B) R={ (9,7), (1,3), (7,1), (3,5) }
C) R={ (1,9), (9,7), (7,5), (5,3) }
√D) R={ (1,3), (3,5), (5,9) }
97、深度为7的二叉树共有127个结点,则下列说法中错误的是
√A) 该二叉树有一个度为1的结点 B) 该二叉树是满二叉树
C) 该二叉树是完全二叉树 D) 该二叉树有64个叶子结点
98、下列叙述中正确的是
A) 非线性结构只能采用链式存储结构B) 非线性结构只能用多重链表表示
C) 所有数据结构既可以采用顺序存储结构,也可以采用链式存储结构
√D) 有的非线性结构也能采用顺序存储结构
99、某二叉树的中序序列为BDCA,后序序列为DCBA,则前序序列为
A) DCBA B) BDCA √C) ABCD D) BADC
100、某完全二叉树共有256个结点,则该完全二叉树的深度为
A) 7 B) 8 √C) 9 D) 10
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)