数据结构第一章:绪论

一、数据结构的三要素:逻辑、存储与运算

在数据结构中,任何一种结构都可以从三个维度来理解:它"看起来是什么关系"(逻辑结构)、"在内存里怎么存"(存储结构)以及"能做什么操作"(数据运算)。这三者共同构成了完整的数据结构。

1. 逻辑结构:数据之间的抽象关系

逻辑结构关注的是数据元素之间的相互关系,与计算机无关,属于数学层面的描述。

  • 线性结构 :元素之间存在一对一 的关系。
    • 典型代表:线性表、栈、队列
    • 特点:有且仅有一个开始元素和一个结束元素,其余元素都有唯一前驱和后继。
  • 非线性结构 :元素之间存在一对多或多对多 的关系。
    • 典型代表:
      • 树(一对多)
      • 图/网(多对多)
      • 集合(无特定关系)

考研高频考点

"以下哪种结构属于线性结构?"

正确答案通常是栈、队列、数组、链表 ;而二叉树、图、哈希表属于非线性结构。


2. 存储结构(物理结构):数据在内存中的实现方式

逻辑结构必须通过某种方式在计算机中实现,这就是存储结构。同一逻辑结构可用不同存储方式实现,效率也不同。

存储方式 特点 适用场景
顺序存储 使用连续内存空间(如数组) 随机访问快,插入删除慢
链式存储 通过指针链接节点(如链表) 插入删除快,不支持随机访问
索引存储 建立索引表加速查找 大型数据库常用
散列存储 利用哈希函数映射地址 快速查找(如哈希表)

典型考题

"若频繁进行插入和删除操作,应选择哪种存储结构?"

答案:链式存储(因无需移动大量元素)。
⚠️ 注意:逻辑结构 ≠ 存储结构!例如,栈是一种逻辑结构,既可以用数组(顺序)实现,也可以用链表(链式)实现。


3. 数据的运算:对结构的操作集合

数据运算是指对数据结构进行的各种操作,如:

  • 初始化、销毁
  • 插入、删除
  • 查找、遍历
  • 排序、合并

这些操作的定义依赖于逻辑结构 ,而实现效率依赖于存储结构

例如:

  • 在顺序表中查找第 i 个元素:O(1)
  • 在单链表中查找第 i 个元素:O(n)

考点提醒

考试常结合具体结构考察操作的时间复杂度,务必掌握常见操作的效率差异。


二、算法及其五大特性

数据结构离不开算法。算法是解决问题的步骤描述,而数据结构是算法操作的对象。

算法的五大特性(必背!)

  1. 有穷性:算法必须在有限步内结束(不能无限循环)。
  2. 确定性:每一步都有明确含义,相同输入必得相同输出。
  3. 可行性:每一步都可通过基本操作实现。
  4. 输入:可以有零个或多个输入。
  5. 输出:至少有一个输出(否则算法无意义)。

易错点

  • "有穷性" ≠ "运行时间短",而是指步骤数量有限
  • 操作系统中的"死循环监控程序"不是算法,因为它不满足有穷性。

三、算法效率的度量:时间复杂度 & 空间复杂度

这是第一章的重中之重,也是后续所有算法分析的基础。

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 链式
算法五大特性 选择题 重点区分"有穷性"与"确定性"
时间复杂度计算 计算题、选择题 多练嵌套循环、递归分析
空间复杂度理解 选择题 注意递归和辅助数组
三要素关系 综合题 理解"同一逻辑结构可有多种存储实现"
相关推荐
额鹅恶饿呃28 分钟前
C语言中的数据结构和变量
c语言·数据结构·算法
万法若空2 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
tachibana23 小时前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode
兰令水3 小时前
leecodecode【面试150】【2026.7.9打卡-java版本】
java·数据结构·leetcode·面试·职场和发展
A.零点5 小时前
期末复习,408考研数据结构:第一章绪论完整知识梳理与真题深度解读
c语言·数据结构·笔记·考研
阿文的代码库5 小时前
经典算法题剖析:按奇偶排序数组
数据结构·算法
玛卡巴卡ldf8 小时前
【LeetCode 手撕算法】(细节知识点总结)
java·数据结构·算法·leetcode·力扣
博界IT精灵9 小时前
主存的扩展及其与CPU的连接(笔记没做完)
笔记·考研
Yang_jie_0310 小时前
笔记:数据结构(链队列的相关判断条件)
数据结构·笔记
zmzb010311 小时前
C++课后习题训练记录Day154
数据结构·c++·算法