我们常常上网查询学C以后学什么,网山有很多回答,但是不管什么回答,都会提到数据结构!
没学透数据结构之前我认为就是一群老外为了提高逼格提出的一个绕晕你的概念,后来听到一个笑话,就是关于一个程序员要求写一个实时排队系统,结果他不到十分钟就写完了,就是来一个人插入数据库,走一个人从数据库里面删除,然后他高兴的给了老板它的方案,然后他老板大喊一声“你数据结构怎么学的”。
一什么是数据结构
数据结构在计算机科学界至今没有标准的定义。个人根据各自的理解的不同而有不同的表述方法,常见以下三种:
1、数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
2、Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。
3、lifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。
二生活中列子
大型图书馆里那么多书,常常把书分成很多类别,每个类别下又按照ABCD拼音首字母存放,如果我们想找到《数据结构》这本书只需要到计算机类的货架的S编号区找到这本书,这个列子引申到计算机就是:解决问题的效率与数据的组织形式有关
三数据结构包括逻辑结构和存储结构(物理结构)
逻辑结构:集合、线性、 树、图(多对多)
存储结构:顺序结构 链式存储
存储结构要能够反映出逻辑结构
四我们常常用ADT抽象数据类型来描述数据结构(此处引用浙大教授陈越老师的原话)
数据类型:数据对象集
数据集合相关联的操作集
抽象:不依赖于具体的实现
1与存储的机器无关
2与数据存储的物理结构无关(我的理解:你可以用顺序存储 也可以用链式存储)
3与实现操作的算法和编程语言无关