本资料包含丰富的Java数据结构复习题,旨在帮助学习者巩固和测试其对数组、链表、栈、队列、树等核心概念的理解与应用能力。
1. 数据结构是一门研究非数值计算的程序设计问题中的数据元素逻辑结构、计算机内存存储方式以及一组相关运算的课程。
2. 数据结构DS(Data Struct)可以被形式地定义为 DS=(D,R),其中 D 是数据对象有限集合,R 是该集合上的关系有限集。
3. 在数据结构中,从逻辑上可以把数据分为线性与非线性两类结构。
4. 算法分析的目的在于评估算法的效率并寻求改进方法;主要关注点包括空间复杂度和时间复杂度两个方面。
5. 计算机中的算法指的是解决问题有限运算序列的方法,并且必须具备输入、输出以及可行性、确定性和有穷性等特性。
1.2 填空题
1. 数据逻辑结构包括集合、线性结构、树形结构与图形结构四种类型,其中后两种合称为非线性结构。
2. 在线性结构中,第一个结点没有前驱节点;其余每个节点有且只有一个前驱节点。最后一个结点没有后续结点;其他每个结点仅有一个直接的后续结点。
3. 树形数据结构里根节点无任何前序节点,每一个其它非叶子(除树根外)都有一个唯一的直接先辈元素或父项;同时叶节点没有任何后继者。而除了这些特定类型的顶点以外的所有其他内部顶点可以有任意数量的子结点。
4. 在图形结构中,每个结点可能具有多个前驱和后续结点数。
5. 线性数据结构中的元素之间存在一对一的关系;树形结构则表现出一对多关系特征。而图(或网)状的数据模型允许其成员间有多对多的关联方式。
6. 一个算法应当具备输入、输出、有穷性和确定性的特点,此外还应具有有效性(即高效性)、简洁明了等优点。
7-10 时间复杂度分析:
对于给定程序段:
a) 第一题最大执行次数为n^2;时间复杂度是O(n^2)
b) 第二题的最大语句频度为(1+2+...+(n−1)),即 n*(n-1)/2 ; 时间复杂性 O(n²)
c) 对于第三段代码,最大执行次数为 n³ ,因此时间复杂度是O(n^3)
d) 第四题中s的值随着i增加而递增直到超过或等于n时停止循环。其语句频率大致等同于求解1+2+...+(k-1)=nk/2≤n 的 k 值,即时间复杂度为O(√n)
e) 对于最后一题中的代码段:i每次迭代都会翻倍直到超过或等于 n 时停止。因此最大执行次数是 log₂(n),算法的时间复杂性为 O(log n)