女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

书、排队号码和地图路线都叫数据,机器人却不能都按同一种方式整理。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 找书按位置存放
  2. 排队按先后取出
  3. 地图记录连接关系

数据结构描述怎样组织数据,以及怎样访问和修改它。

像整理物品一样,先问最常做的动作是什么,再选择安排方式。查第几个、取最早来的、找相邻地点,是不同需求。

01数据多了以后会发生什么?

只有几个变量时,我们可以直接用 abc。但数据越来越多时,程序必须知道:

  • 这些数据是什么关系?
  • 应该按什么顺序放?
  • 怎样最快找到需要的数据?
  • 怎样添加或删除?

02什么是数据结构?

数据结构(Data Structure)就是组织、存储和管理数据的方法

数组

按顺序连续保存。

后放进去的先取出。

队列

先来的先处理。

树 / 图

表达层级和连接关系。

03为什么不能所有问题都用数组?

数组很重要,但不同问题需要不同操作。

例如:

  • 浏览器“返回上一页”更像栈
  • 打印任务按先后处理更像队列
  • 文件夹层级更像树
  • 城市道路连接更像图

04数据结构会影响程序速度吗?

会。

同样是“找一个数据”,不同数据结构可能需要完全不同的工作量。

组织得合适

访问、插入、删除更自然。

组织得不合适

可能需要大量移动或反复查找。

05数据结构和算法是什么关系?

算法告诉程序“怎样解决问题”,数据结构告诉程序“数据怎样组织”。

数据数据结构算法处理

两者经常一起设计。

06学习数据结构要先记代码吗?

不需要。

这一专题更重要的是先建立直观模型:

  • 数据怎样放
  • 从哪里进
  • 从哪里出
  • 元素之间是什么关系

你已经知道了什么

  • 数据结构是组织和管理数据的方法。
  • 不同结构适合不同操作和问题。
  • 数据结构会影响程序的清晰度和效率。
  • 数据结构和算法经常一起设计。
  • 学习时应先理解模型,再学习代码接口。

下一篇:栈:像一摞盘子

轮到你来试一试

学校食堂叫号,更像随机挑一个人,还是先来的先服务?

想好了吗?点开看解释

通常按排队顺序服务,更适合队列模型。规则决定我们需要保留到达顺序。