大家可以看看这两篇博客有助于理解
https://blog.csdn.net/viafcccy/article/details/84641790
https://blog.csdn.net/viafcccy/article/details/84583386
数据结构的起源
世界上第一台计算机诞生于美国的宾夕法尼亚大学,名字叫做ENIAC(Electronic Numerical Integrator And Computer),即为电子数字积分计算机。每秒可以进行5000次加法或者400次乘法。由此可见,在当时的情况下,计算机的研制主要是为了进行数值计算,解决的是数值计算的问题,例如乘除加减。
后来随着社会的发展,除了数值计算的问题,我们在现实生活中更加需要解决的是一些非数值计算的问题,例如,文字,图像,声音等等。在这个时候,我们就需要一些科学的方法来解决非数值计算的程序设计问题。
1968年,美国的高德纳在其所写的《计算机程序设计艺术》的第一卷中第一次较为系统的阐述了数据的逻辑结构和存储结构及其操作。这个时候,数据结构才算是成为了一门独立研究的学科。之后无数的莘莘学子保受其折磨,又因此而获益,痛并快乐着。《计算机程序设计的艺术》系列,开始于他念博士期间,计划出七卷,第一卷《基本算法》于1968年出版,第二卷《半数字化算法》于1969年出版,第三卷《排序与搜索》于1973年出版,第四卷《组合算法》于2008年出版。
在之后,各种程序设计泛型的提出,例如面向过程的程序设计,面向对象的程序设计,人们越来越重视数据结构,认为程序设计实际上是找到数据最合理的组织方式,并设计一种好的计算方法,对其进行计算。
数据结构的基本概念
数据
描述客观事物的符号,是计算机可以操作的对象。
比如 图像 文字 视频 结构体
数据元素
组成数据有一定意义的基本单位。
例如 图像中的像素点 文字中的每一个字 视频的每一帧 结构体中的每一个变量
数据项
不可分割的最小单元。
例如 表格中的性别 名字 专业 学校
数据对象
性质相同的数据的集合,数据的子集。
例如 一个游戏中 武器的集合 和 游戏人物的集合
数据结构
数据之间的关系与联系。
例如 电视剧中人物的关系 数据的联系
逻辑结构
也就是我们思考的解决方式
比如你解决数学题的过程
物理结构
数据在内存中的储存方式
类似于栈 堆
抽象数据结构
类似于建模 抽取关键部分舍去不重要的条件
类似于吃鸡里 将人的行为抽象为捡枪 射击 移动 等等 但是舍去了他会不会c语言 会不会数据结构这些无关紧要的条件 将数据抽象起来
抽象
从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。