一、数据结构的三要素:逻辑、存储与运算
在数据结构中,任何一种结构都可以从三个维度来理解:它"看起来是什么关系"(逻辑结构)、"在内存里怎么存"(存储结构)以及"能做什么操作"(数据运算)。这三者共同构成了完整的数据结构。
1. 逻辑结构:数据之间的抽象关系
逻辑结构关注的是数据元素之间的相互关系,与计算机无关,属于数学层面的描述。
- 线性结构 :元素之间存在一对一 的关系。
- 典型代表:线性表、栈、队列
- 特点:有且仅有一个开始元素和一个结束元素,其余元素都有唯一前驱和后继。
- 非线性结构 :元素之间存在一对多或多对多 的关系。
- 典型代表:
- 树(一对多)
- 图/网(多对多)
- 集合(无特定关系)
- 典型代表:
✅ 考研高频考点:
"以下哪种结构属于线性结构?"
正确答案通常是栈、队列、数组、链表 ;而二叉树、图、哈希表属于非线性结构。
2. 存储结构(物理结构):数据在内存中的实现方式
逻辑结构必须通过某种方式在计算机中实现,这就是存储结构。同一逻辑结构可用不同存储方式实现,效率也不同。
| 存储方式 | 特点 | 适用场景 |
|---|---|---|
| 顺序存储 | 使用连续内存空间(如数组) | 随机访问快,插入删除慢 |
| 链式存储 | 通过指针链接节点(如链表) | 插入删除快,不支持随机访问 |
| 索引存储 | 建立索引表加速查找 | 大型数据库常用 |
| 散列存储 | 利用哈希函数映射地址 | 快速查找(如哈希表) |
✅ 典型考题:
"若频繁进行插入和删除操作,应选择哪种存储结构?"
答案:链式存储(因无需移动大量元素)。
⚠️ 注意:逻辑结构 ≠ 存储结构!例如,栈是一种逻辑结构,既可以用数组(顺序)实现,也可以用链表(链式)实现。
3. 数据的运算:对结构的操作集合
数据运算是指对数据结构进行的各种操作,如:
- 初始化、销毁
- 插入、删除
- 查找、遍历
- 排序、合并
这些操作的定义依赖于逻辑结构 ,而实现效率依赖于存储结构。
例如:
- 在顺序表中查找第 i 个元素:O(1)
- 在单链表中查找第 i 个元素:O(n)
✅ 考点提醒 :
考试常结合具体结构考察操作的时间复杂度,务必掌握常见操作的效率差异。
二、算法及其五大特性
数据结构离不开算法。算法是解决问题的步骤描述,而数据结构是算法操作的对象。
算法的五大特性(必背!)
- 有穷性:算法必须在有限步内结束(不能无限循环)。
- 确定性:每一步都有明确含义,相同输入必得相同输出。
- 可行性:每一步都可通过基本操作实现。
- 输入:可以有零个或多个输入。
- 输出:至少有一个输出(否则算法无意义)。
✅ 易错点:
- "有穷性" ≠ "运行时间短",而是指步骤数量有限。
- 操作系统中的"死循环监控程序"不是算法,因为它不满足有穷性。
三、算法效率的度量:时间复杂度 & 空间复杂度
这是第一章的重中之重,也是后续所有算法分析的基础。
1. 时间复杂度(Time Complexity)
衡量算法运行时间随输入规模增长的趋势,用大O记号(Big-O) 表示。
常见时间复杂度排序(从小到大):
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!)
典型例子:
a = b + c→ O(1)- 二分查找 → O(log n)
- 遍历数组 → O(n)
- 快速排序 → O(n log n)
- 冒泡排序 → O(n²)
✅ 计算技巧:
- 只看最高阶项,忽略常数和低阶项。
- 嵌套循环:外层 n 次,内层 m 次 → O(n×m)
例题:
for (i = 0; i < n; i++) {
for (j = 0; j < i; j++) {
sum++;
}
}
执行次数 ≈ 1+2+...+(n-1) = n(n-1)/2 → 时间复杂度为 O(n²)
2. 空间复杂度(Space Complexity)
衡量算法执行过程中额外占用的存储空间(不包括输入数据本身)。
- 常数空间:O(1)(如只用几个变量)
- 递归深度为 n:O(n)(函数调用栈)
- 动态规划数组大小为 n:O(n)
✅ 注意 :
空间复杂度常被忽视,但近年真题中已有涉及,如问"递归版斐波那契的空间复杂度是多少?" → 答案:O(n)
四、第一章高频考点总结(建议收藏!)
| 考点 | 考查形式 | 备考建议 |
|---|---|---|
| 逻辑结构分类 | 选择题、判断题 | 牢记线性 vs 非线性 |
| 存储结构特点 | 选择题、简答题 | 对比顺序 vs 链式 |
| 算法五大特性 | 选择题 | 重点区分"有穷性"与"确定性" |
| 时间复杂度计算 | 计算题、选择题 | 多练嵌套循环、递归分析 |
| 空间复杂度理解 | 选择题 | 注意递归和辅助数组 |
| 三要素关系 | 综合题 | 理解"同一逻辑结构可有多种存储实现" |