pre-pre Face:用计算机解决问题时,大致需要经过以下步骤:
- 从具体问题抽象出一个适当的数学模型;
- 设计一个解此数学模型的算法;
- 编出程序,进行测试、调整直至得到最终解答。
寻求数学模型的实质是分析问题,从中提取操作对象,并找出这些操作对象之间含有关系,然后数学的语言加以描述。
什么是Data Structure?不就是data + structure啰!!理论是为了用于实践的,用例子说明会更好理解!
请看以下经典问题:
- 在图书馆如何检索我想要的图书?
- 如何成为棋盘高手?
- 如何为交叉路设计最佳路灯方案?
- 什么是数据
- 定义:数据是指由有限的符号(比如,"0"和"1",具有其自己的结构、操作、和相应的语义)组成的元素的集合。
- 分类与组成:数值与非数值:一条图书记录为一数据元素,它有图书编号、书名等数据项;多条图书记录组成的表是一个数据对象;同样,一棋盘状态为一数据元素,它的棋子状态为数据项,如此类推……
- 什么是结构
- 定义:数据元素之间的关系称为结构。
- 分类与组成:
- 集合—“同属于一个集合”
- 线性结构—1:1 -----------》表是线性结构的(全序关系)
- 树形结构—1:N ----------》树(偏序或层次关系)
- 图状结构或网状结构—N:N---》图(局部有序(weak/local orders))是非线性结构
- 理解:关键理解数据元素,其可分解为数据项,数据元素间有关系………
1.数据结构一般包括以下三方面内容:
① 数据元素之间的逻辑关系,也称数据的逻辑结构(Logical Structure);
数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
② 数据元素及其关系在计算机存储器内的表示,称为数据的存储结构(Storage Structure);
数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它依赖于计算机语言。对机器语言而言,存储结构是具体的。一般,只在高级语言的层次上讨论存储结构。
③ 数据的运算,即对数据施加的操作。
数据的运算定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。最常用的检索、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。
所谓抽象的操作,是指我们只知道这些操作是"做什么",而无须考虑"如何做"。只有确定了存储结构之后,才考虑如何具体实现这些运算。