1.1 数据结构的研究内容
1.计算机解题步骤
通常,用计算机解题一个问题的步骤:
①具体问题抽象为数学模型。实质:分析问题;提取操作对象;找出操作对象之间的关系;用数学语言描述→数据结构。
②设计算法。
③编程、调试、运行。
2.数值计算
早期,计算机主要用于数值计算。
数学模型:
线性方程组:。
数学模型:微分方程(;
;
)。
首先,分析问题、提取操作对象。然后,找出操作对象之间的关系,用数学语言加以描述,建立相应数学方程。最后,求解数学方程:高斯消元法、有限元法、差分法……
特点:数据元素间的关系简单,计算复杂。
3、非数值计算
随着计算机应用领域的扩展,计算机被越来越多地用于非数值计算。
| 表1.1 学生基本信息表 | ||||
| 学号 | 姓名 | 性别 | 籍贯 | 专业 |
| 60214201 | 杨阳 | 男 | 安徽 | 计算机科学与技术 |
| 60214202 | 薛林 | 男 | 福建 | 计算机科学与技术 |
| 60214215 | 王诗萌 | 女 | 吉林 | 计算机科学与技术 |
| 60214216 | 冯子晗 | 女 | 山东 | 计算机科学与技术 |
操作对象:每位学生的信息(学号、姓名、性别、籍贯、专业……)。
操作算法:查询、插入、修改、删除等。
操作对象之间的关系:线性关系。
数据结构:线性数据结构、线性表。
类似:图书管理系统、人事管理系统、仓库管理系统、通讯录……
操作对象:若干行数据记录。
操作算法:查询、插入、修改、删除等。
操作对象之间的关系:线性关系。
数据结构:线性数据结构、线性表。
之所以能对弈:策略已经输入计算机,可以根据当前棋盘格局,来预测棋局发展的趋势,甚至最后结局。
操作对象:各种棋局状态,即描述棋盘的格局信息。
操作算法:走棋,即选择一种策略使棋局状态发生变化(由一种格局派生出另一个格局)。
操作对象之间的关系:非线性关系、树。
类似:文件系统的系统结构图
磁盘根目录下有很多子目录及文件,每个子目录里又可以包含多个子目录及文件,但每个子目录只有一个父目录,依此类推。
本问题是一种典型的树型结构问题,数据与数据成一对多的关系,是一种典型的非线性关系结构——树形结构。
地图导航——求最短路径(最快路径)。
问题:找出图中两点之间的最短路径或最经济路径。
操作对象:各地点及路的信息。
操作算法:设置信号灯,求出各个可同时通行的路的集合。
对象之间的关系:非线性关系、网状结构。
4、小结
综上所述:
①这些问题的共性是都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题。
②描述非数值计算问题的数学模型不是数学方程,而是诸如表、树和图之类的具有逻辑关系的数据。
③数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
要想有效地使用计算机,就必须学习数据结构