在学数据结构过程中,我们都会产生这样的想法:我们为什么学习数据结构,学数据结构有什么作用?这些有关数据结构的算法不都有人封装好了,我们可以直接调用,学了数据结构还不知道它的用途,等等这样的想法。
在这里我用一个不恰当的比喻:比如项目经理找你优化系统中的排序算法,而此时你会无重下手,因为该算法你是调用别人的,底层的实现一点不懂,此时只能加班看书,而如果你学了数据结构,你就会知道多种排序算法,根据实际问题寻找最优的算法,也省了加班的时间。
上述例子可以体现到数据结构的用处,如果你当时感觉不到它的用处,别灰心随着你职位的提高,接触底层的东西,你就会发现它的魅力。现在就让我们一起去见见数据结构的世界。
定义:数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
概念图:
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。比如:整型,实型等数据类型,还包括字符及声音,图像,视频等非数值类型。
数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。比如:人类的数据元素是人,禽类的数据元素如鸡,牛,羊等
数据项:一个数据元素可以由若干个数据项组成。比如人这个数据元素中 鼻口耳眼睛等就是组成人的数据项。
数据对象:性质相同的数据元素的集合,是数据的子集。
(估计看到这样的概念很头疼是不?其实我也头疼,没办法也的记啊!)
数据结构
图解
逻辑结构:是指数据对象中数据元素之间的相互关系:
1集合结构: 集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。(平等,同属于一个集合)
图1::
2 线性结构:线性结构中的数据元素之间是一对一的关系
图2:
3 树形结构:树形结构中数据元素之间存在一种一对多的层此关系
图3:
4图形结构:图形结构中数据元素是多对多的关系
图4:
物理结构: 是指数据的逻辑结构在计算机中的存储形式
顺序结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
图解:
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以时不连续的。
图解:
现在我们了解数据结构的基本概念和术语,现在真正讲解抽象数据类型:
学抽象数据类型之前我们先了解一下数据类型:
数据类型: 是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。比如基本数据类型等
抽象是什么?
抽象是指抽取事物具有的普遍性的本质,它是抽出问题的特征而忽略非本质的细节,是对具体事物的一个概括。
抽象数据类型(ADT)(Abstract Data Type):是指一个数学模型及定义在该模型上的一组操作。
描述抽象数据类型的标准格式:
学数据结构要一步一个脚印的走,不可投机取巧,否则,时间花费了到头来什么也没收获。
大话数据结构
严蔚敏的数据结构(c语言版)
原文:http://blog.51cto.com/12666319/2125729