数据结构
1.数据结构背景的介绍
1.线性的数据结构:
- 线性表: 一对一的关系,举个例子,在超市排队买东西,前面有人在排队,我们后面有个人在排队,这种叫做线性关系
- 栈:
- 队列
举个栗子: 点名册,学生1号后面2号,2号后面是3号,这是一对一的线性关系,
存储结构:1.假设点名册,学生的座位号是按照学号来做的 ,我们称这种为顺序存储结构
2.随机坐,教室里哪里有空位,就去哪里坐,我们称这种叫链式存储
举个栗子:班里有100个学生,新来了一个学生,它要坐5号的位置,那么原本5号就要往后坐,5号后面的学生都需要往后挪动一个位置,如果是10000个人,新来的同学还要坐5号位置,那么这个效率有多低呀
存储的方式,对算法的效率是非常有影响的
思路:首先我们要记住数据与数据之间的关系(逻辑结构),其次我们要把它存储下来,
举个例子:农夫过河,有一个农夫带一匹狼,一只羊喝一颗白菜过河(从河的北岸到南岸),如果没有农夫看关,则狼要吃羊,养要吃白菜.但是船很小,只够农夫带一样东西过河.
人工解题步骤: 理解和分析-所面临的问题 , 寻找解题的途径和方法, 用纸笔等工具计算 ,验证结果
计算机解决: 理解和分析-所面临的问题 , 寻找解题的途径和方法 ,生成算法, 编写程序
农夫过河算法思路:以向量(人,狼,羊,菜)表示状态,其中每个变元可取0或1,取0表示在左岸(出发点),取1表示在右岸,寻找规律
解决方法:利用队列,图的广度优先遍历等
2.树 : 一对多的关系
3.图 : 多对多的关系
4.查找
如何查找效率最高?
5.排序
考虑到算法的效率?
2.什么是数据结构?
如何描述数据,数据和数据之间的关系?
-表
-图
数据的的逻辑结构:数据元素之间的逻辑关系
数据的存储结构:数据元素在计算机中的存储方法(表现和实现)
数据结构要做的第一件事情:
把面向的实际问题抽象成出具体的数据模型
如何解决实际的问题?
1.排序,查找
2.求解问题的方法
3.方法的有效性
数据:学校
数据元素:学生
数据项:name ,age
数据对象:性质相同的数据元素的集合
数据结构:
- 线性结构
- 树形结构 一对多, 开始节点(单独一个),树的节点的上一层只对应一个,终端节点没有分支(儿子)
- 图形结构
- 集合
数据结构的形式定义:
一个二元组:
Date_Structure = (D,S) # D:数据 S:关系
其中:D是数据元素的的集合,S是D上的关系集合
数据结构的分类:
- 按照逻辑结构的不同分为:集合,线性结构,树形结构,网状结构
- 按照物理结构不同分为:
- 顺序结构:利用在存储器中的物理关系来表示逻辑关系
- 链式结构:用在存储器中附加指针的方式来表示逻辑关系