
一起动脑筋 · 先看一个小故事
书、排队号码和地图路线都叫数据,机器人却不能都按同一种方式整理。
把过程摊开来看
- 找书按位置存放
- 排队按先后取出
- 地图记录连接关系
数据结构描述怎样组织数据,以及怎样访问和修改它。
像整理物品一样,先问最常做的动作是什么,再选择安排方式。查第几个、取最早来的、找相邻地点,是不同需求。
01数据多了以后会发生什么?
只有几个变量时,我们可以直接用 a、b、c。但数据越来越多时,程序必须知道:
- 这些数据是什么关系?
- 应该按什么顺序放?
- 怎样最快找到需要的数据?
- 怎样添加或删除?
02什么是数据结构?
数据结构(Data Structure)就是组织、存储和管理数据的方法。
数组
按顺序连续保存。
栈
后放进去的先取出。
队列
先来的先处理。
树 / 图
表达层级和连接关系。
03为什么不能所有问题都用数组?
数组很重要,但不同问题需要不同操作。
例如:
- 浏览器“返回上一页”更像栈
- 打印任务按先后处理更像队列
- 文件夹层级更像树
- 城市道路连接更像图
04数据结构会影响程序速度吗?
会。
同样是“找一个数据”,不同数据结构可能需要完全不同的工作量。
组织得合适
访问、插入、删除更自然。
组织得不合适
可能需要大量移动或反复查找。
05数据结构和算法是什么关系?
算法告诉程序“怎样解决问题”,数据结构告诉程序“数据怎样组织”。
数据→数据结构→算法处理
两者经常一起设计。
06学习数据结构要先记代码吗?
不需要。
这一专题更重要的是先建立直观模型:
- 数据怎样放
- 从哪里进
- 从哪里出
- 元素之间是什么关系
你已经知道了什么
- 数据结构是组织和管理数据的方法。
- 不同结构适合不同操作和问题。
- 数据结构会影响程序的清晰度和效率。
- 数据结构和算法经常一起设计。
- 学习时应先理解模型,再学习代码接口。
下一篇:栈:像一摞盘子
轮到你来试一试
学校食堂叫号,更像随机挑一个人,还是先来的先服务?
想好了吗?点开看解释
通常按排队顺序服务,更适合队列模型。规则决定我们需要保留到达顺序。