《大话数据结构》读书笔记(一)—(三)

《大话数据结构》读书笔记

    • 第一章:数据结构绪论
    • 1.概念
    • 2.数据结构的分类
    • 3.抽象数据类型
    • 第二章:算法
    • 第三章:线性表(List)
    • 1. 概念
    • 2. 线性表的顺序存储结构
    • 3. 线性表的链式存储结构

第一章:数据结构绪论

1.概念

数据项:数据不可分割的最小单位。
数据元素(记录):由若干数据项组成。在计算机中作为整体处理,又称记录。
数据对象(数据)性质相同的数据元素(即数据项数量和类型相同)的集合,是数据的子集。
数据结构:相互之间存在一种或多种特定关系的数据元素的集合。

2.数据结构的分类

(1)逻辑结构
数据对象中数据元素间的相互关系。
(集合结构、线性结构、树形结构、图形结构)

(2)物理结构
数据的逻辑结构在计算中的存储形式。

  1. 顺序存储结构:存储单元连续
  2. 链式存储结构:存储单元可不连续,需要存放数据元素地址的指针。

3.抽象数据类型

ADT(Abstract Data Type):数学模型+一组操作
描述格式
ADT 数据类型名
Data 数据元素间逻辑关系
Operation
操作

endADT

第二章:算法

定义:解决特定问题求解步骤的描述。
特性:输入(0/多)、输出(至少1)、有穷性(无线循环,可接受时间 )、确定性(二义性 )、可行性
设计要求:正确性、可读性、健壮性(对不合法输入作出处理)、时间效率高和存储量低。
时间复杂度:语句总执行次数随问题规模(n)的变化情况。考虑渐近时间复杂度(随n增大,增长率)。用大O记法
常见时间复杂度所耗时间
算法好坏比较:可比较算法关键执行次数的渐近增长性。随n增大,会越来约优于/差于另一算法。

第三章:线性表(List)

1. 概念

  1. 定义:零或多个数据元素的有限序列。零个即空表。
  2. 数据元素间是一对一关系,除第一个元素外各元素均有且只有一个直接前驱元素,除最后一个元素外各元素均有且只有一个直接后继元素

2. 线性表的顺序存储结构

  1. 定义:用一段地址连续的存储单元依次存储线性表的数据元素。(可用一维数组)
  2. 3个属性:起始位置(数组data的存储位置)、最大存储容量(数组长度MaxSize)、当前长度(length)。
  3. 存取:第i个元素的存储位置(每个数据元素占c个存储单元)为
    在这里插入图片描述
    所以其存取时间性能为O(1)——随机存取结构。
  4. 删除和插入:平均时间复杂度为O(n)。
  5. 缺点:插入和删除操作需移动大量元素;线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的“碎片化”;

3. 线性表的链式存储结构

  1. 结点(Node):数据元素的存储映像。由数据域(存储数据元素信息的域)和指针域(存储数据元素直接后继位置的域,即存储的是指针或链)组成。

  2. 单链表:有一个指针域。
    头结点:线性链表前的一个结点,头结点的指针域存储指向第一个结点的指针。若链表为空,则头结点的指针域为“空”。
    头指针:链表第一个结点的存储位置。链表有头结点时,头指针即指向头结点的指针。头指针永不为空。
    《大话数据结构》读书笔记(一)—(三)_第1张图片

  3. 描述方法——结构指针(C语言)
    (代码:)

  4. 优缺点
    时间性能:查找O(n),插入删除O(1)
    空间性能:不需预分配存储空间,元素个数不受限制。

  5. 其他链表
    静态链表(无指针的语言,数组实现)
    循环链表(尾指针rear指向头结点,可从任一结点出发访问全部结点)
    双向链表(增加前驱指针)

你可能感兴趣的:(读书笔记)