计算机考研——数据结构笔记

数据结构

文章目录

  • 数据结构
    • 第一章:绪论
      • 1.1基本概念和术语
        • 1.1.1 概念
        • 1.1.2 数据结构三要素
      • 1.2 算法和算法评价
        • 1.2.1 算法概念
        • 1.2.2 时空复杂度的计算
    • 第二章 线性表
      • 2.1 线性表的定义和基本操作
        • 2.1.1 线性表的定义
        • 2.1.2 线性表的基本操作
      • 2.2 顺序表
        • 2.2.1 顺序表的定义
        • 2.2.2 顺序表的基本操作
      • 2.3 线性表的链式表示
        • 2.3.1 单链表的定义
        • 2.3.2 单链表的操作实现
        • 2.3.3 双链表
        • 2.3.4 循环链表
        • 2.3.5 静态链表
        • 2.3.6 顺序表与链表的对比
    • 第三章 栈、队列和数组
      • 3.1 栈
        • 3.1.1 栈的概念
        • 3.1.2 栈的顺序存储结构
      • 3.2 队列
        • 3.2.1 队列的概念
        • 3.2.2 队列的顺序存储结构
        • 3.2.3 队列的链式存储结构
        • 3.2.4 双端队列
      • 3.3 栈和队列的应用
        • 3.3.1 栈在括号匹配中的应用
        • 3.3.2 栈在表达式求值中的应用
        • 3.3.3 栈在递归中的应用
        • 3.3.4 队列在计算机系统中的应用
      • 3.4 数组和特殊矩阵
        • 3.4.1 数组的定义
        • 3.4.2 数组的存储结构
        • 3.4.3 特殊矩阵的压缩存储

第一章:绪论

1.1基本概念和术语

1.1.1 概念
  • 数据:信息的载体,程序加工的原料

  • 数据元素:数据的基本单位,由数据项组成

  • 数据对象:及有相同性质的数据元素的组合,是数据的子集

  • 数据类型:是一个值的集合,和定义在这个集合上操作的总称,分为:

    ①原子类型,②结构类型,③抽象数据类型

  • 数据结构:即数据+结构,是相互之间存在一种或多种特定关系的数据元素的集合,其中数据元素之间的关系被称为结构

1.1.2 数据结构三要素
  1. 数据的逻辑结构:

    • 线性结构:

      线性表:数据元素间只存在一对一的关系

    • 非线性结构:

      集合:数据元素之间除了“同属一个集合”外无其他关系

      树形结构:数据元素之间存在一对多的关系

      网状结构:数据元素之间存在多对多的关系

  2. 数据的存储结构:

    是数据结构在计算机中的映像,是通过计算机语言实现的逻辑结构

    • 顺序存储:

      定义:把逻辑上相邻的元素存储在物理位置相邻的存储单元中

      优点:可以实现随机存取,每个元素占用最少的存储空间

      缺点:只能使用相邻的一整块单元,外部碎片较多

    • 链式存储:

      定义:通过数据元素中的指针来指示元素之间的逻辑关系

      优点:不会出现碎片现象,能充分利用所有存储单元

      缺点:数据元素因指针而占用更多的存储空间,且只能顺序存取

    • 索引存储:

      定义:在存储元素信息的同时,建立一个由关键字+地址组成的索引表

      优点:检索速度快

      缺点:索引表占用额外的空间,且对数据进行操作时可能需要修改索引表,导致所需时间变长

    • 散列存储(哈希存储):

      定义:通过某种函数和元素的关键字直接计算出元素的存储地址

      优点:对数据元素的增删改查变快

      缺点:若散列函数不好,可能出现存储单元的冲突,为解决这些冲突会增加时间和空间的开销

  3. 数据的运算:

    包括运算的定义和实现,定义指出运算的功能,实现指出运算的具体步骤

1.2 算法和算法评价

1.2.1 算法概念

​ 算法即对解决问题的方法的一系列代码描述。

1.2.2 时空复杂度的计算

一、时间复杂度

​ 算法的时间复杂度是算法中基本运算的执行次数的数量级,记为O(f(n)),而基本运算是指算法中最深层循环的语句。在一般情况下,分析时间复杂度是分析最坏情况下的时间复杂度。

​ 分析时间复杂度有以下两条规则:

​ ①加法规则:
T ( n ) = T 1 ( n ) + T 2 ( n ) = O ( f ( n ) ) + O ( g ( n ) ) = O ( m a x ( f ( n ) , g ( n ) ) ) T(n)=T_1(n)+T_2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n))) T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
​ ②乘法规则:
T ( n ) = T 1 ( n ) × T 2 ( n ) = O ( f ( n ) ) × O ( g ( n ) ) = O ( f ( n ) × g ( n ) ) T(n)=T_1(n)×T_2(n)=O(f(n))×O(g(n))=O(f(n)×g(n)) T(n)=T1(n)×T2(n)=O(f(n))×O(g(n))=O(f(n)×g(n))
​ 常见的渐进时间复杂度为:
O ( 1 ) < O ( log ⁡ 2 n ) < O ( n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1)

你可能感兴趣的:(考研,数据结构,笔记)