第一章数据结构绪论
数据结构:相互之间存在一种或多种特定关系的数据元素的集合
开场白
- If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime
翻译: 让我们去玩数据结构,去感受编程的美 - 每学习一个知识点时,自己询问编程的
他是谁,他有什么用,他怎么理解
你的数据结构怎么学的
数据结构就像高数,编程的地基,最本质的东西
数据结构起源
数据结构是用来解决非数值计算的操作对象关系操作等相关问题
基本概念和术语
数据:
- 符号、可操作对象的集合。
- 输入到计算机中,被计算机处理
数据元素:
- 组成数据的有意义的基本单位,eg:人类中每个人就是数据元素
数据项:
- 数据不可分割的做小单位.eg:人的年龄
数据对象:
- 数据的子集,性质相同数据元素的集合eg:人类中的老人
数据结构:
- 结构简单理解就是关系,数据结构也就是存在关系的数据元素集合
lime :人类-老人-一个人-年龄-------存在关系的人的集合
逻辑结构和物理结构
逻辑结构:
- 是指数据对象中数据元素之间的相互关系. 一对一、多对多等等
- 用来定义数据元素的关系
- 分类:
- 集合结构(任何人在一起就是集合结构人人平等)
- 线性结构(老公和老婆一对一关系)
- 树形结构(妈妈和儿子一对多)为什么不爸爸请你自己思考
- 图形结构(表哥和表弟多对多)
物理结构:
- 是指数据的逻辑结构在计算机中的存储形式
- 用来在计算机中反映逻辑结构
- 两种存储结构形式:
- 顺序存储:
- (一块连续空间,排队上厕所,数组)把数据元素放在连续的储存单元里,逻辑关系和物理关系一样
- 只能使用一整块相邻的存储单元,可能产生较多外部碎片
- 随机存储
- 链式存储结构
- (先领号,按照号码上厕所)把数据元素放在任意的存储单元里.用指针来存放数据元素地址,逻辑关系和物理关系不一样
- 非随机存取(又称顺序存取):就是存取第N个数据时,必须先访问前(N-1)个数据
- 索引存储结构
- 存储节点时,额外存储地址,形式如<关键字,地址>
- 关键字:标识唯一一个节点,地址:指向上述节点的指针
- 增、删数据时要修改索引表,会花费更多的时间
- 散列(Hash)存储方法
- 根据节点的关键字计算出节点的存储地址,形如location=Hash(key)
- 散列函数不好,会出现元素存储单元冲突
- 顺序存储:
抽象数据类型
数据类型:
- def:一组性质相同值的集合+集合的操作的总称
- 作用:规定数据的大小,类别
- 分类:
- 原子类型:不可分eg:int
- 结构类型:可再分eg:struct
抽象数据类型 ( Abstract Data Type, ADT):
- def:一个数学模型及定义在改模型上的操作.eg:三维直角坐标系的每一个点可抽象数据类型为point,每个point包含x,y,z三个数据,然后还有一些自定义的操作.
lime: 抽象数据类型就可以近似当做面向对象中的类
In a word
数据结构是存在一种或多种特定关系的数据元素的集合