一、起源
1、早期理解
人们都把计算机理解为数值计算工具
数值计算的特点:有数学方程,可以用计算机去做传统的数值计算
比如:一个线性回归的模型【机器学习】 ①根据历史数据(黑点),去拟合这条线,得到这条线的方程f(x)
②给了一个新的x,则可以用f(x)去预测它的取值(比如x是学习时长,y是考研分数)
2、现实中
需要一些更科学有效的手段的帮助,才能更好地处理问题(非数值计算)
树形结构
网状结构 线性结构 比如文件夹的管理 比如社交关系 比如排队系统、学生学籍管理系统
数据结构在干嘛?
学科定义:是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和操作等相关问题的学科
例子1:QQ可能认识的人 例子2:文件夹的管理 没有数学方程,是非数值计算
操作对象:每一个结点(用户)
用户之间的关系:是好友,或者不是好友
用户之间的操作:查询你的所有好友……
没有数学方程,是非数值计算
操作对象:每一个结点(文件夹)
结点之间的关系:父子关系
结点之间的操作:寻找某个父亲的孩子……
二、历史
1968年,美国的高德纳(Donald E.Knuth)教授在其所写的《计算机程序设计艺术》第一卷《基本算法》中, 较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系
同年,数据结构作为一门独立的课程,在计算机科学的学位课程中开始出现
70年代初,出现了大型程序,软件也开始相对独立,结构程序设计成为程序设计方法学的主要内容
人们越来越重视“数据结构”,认为程序设计的实质是对确定的问题选择一种好的结构
程序设计=数据结构+算法