最近这一段时间在学习数据结构。感觉还是很值得的。有老大的话说就是这次投资成功了。
开始决定学习的时候买了一本书 《数据结构(C语言版)》相信大家都看过吧。是严蔚敏老师写的,确实写的很精彩,可惜的是本人的C语言不行啊。最多也就是学的是里面的设计思想了吧。哈哈。
然后觉得不过瘾,又买了一本《数据结构(C#语言描述)》,是陈广(我不认识)。不过也还可以啦。里面还有视频的配套教学,个人觉得对我来说挺好啦,不过要是C语言过关的话还是看严蔚敏老师的数据结构吧。毕竟这个是部经典呀。
今天决定在博客中记录我学习数据结构的历程。也是我继续学习的动力吧。
今天是绪论^没劲,全是理论。
不过万事开头难。虽然我已经把理论看到二叉树那一章了,但是我决定从现在开始把理论落到实处……
OK.GO^^^^^^
什么是数据结构?
数据结构是计算机科学与技术专业的专业基础课,是十分重要的核心课程。所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付众多复杂的课题的。
要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。
打好“数据结构”这门课程的扎实基础,对于学习计算机专业的其他课程,
如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的。
为什么要学习数据结构
在计算机发展的初期,人们使用计算机的目的主要是处理数值计算问题。
当我们使用计算机来解决一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个适当的数学模型,
然后设计或选择一个解此数学模型的算法,
最后编出程序进行调试、测试,直至得到最终的解答。例如,求解梁架结构中应力的数学模型的线性方程组,该方程组可以使用迭代算法来求解。
由于当时所涉及的运算对象是简单的整型、实型或布尔类型数据,所以程序设计者的主要精力是集中于程序设计的技巧上,而无须重视数据结构。
随着计算机应用领域的扩大和软、硬件的发展,非数值计算问题越来越显得重要。据统计,当今处理非数值计算性问题占用了90%以上的机器时间。
这类问题涉及到的数据结构更为复杂,数据元素之间的相互关系一般无法用数学方程式加以描述。
因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,才能有效地解决问题。
下面所列举的就是属于这一类的具体问题。
然后还有什么是数据、数据元素、数据对象、数据结构
有关概念和术语
在系统地学习数据结构知识之前,先对一些基本概念和术语赋予确切的含义。
数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。它是计算机程序加工的原料,应用程序处理各种各样的数据。
计算机科学中,所谓数据就是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。数值数据是一些整数、实数或复数,
主要用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。
数据元素(Data Element)是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
例如,学生信息检索系统中学生信息表中的一个记录、八皇后问题中状态树的一个状态、教学计划编排问题中的一个顶点等,都被称为一个数据元素。
有时,一个数据元素可由若干个数据项(Data Item)组成,例如,学籍管理系统中学生信息表的每一个数据元素就是一个学生记录。
它包括学生的学号、姓名、性别、籍贯、出生年月、成绩等数据项。这些数据项可以分为两种:一种叫做初等项,
如学生的性别、籍贯等,这些数据项是在数据处理时不能再分割的最小单位;另一种叫做组合项,
如学生的成绩,它可以再划分为数学、物理、化学等更小的项。通常,在解决实际应用问题时是把每个学生记录当作一个基本单位进行访问和处理的。
数据对象(Data Object)或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
在某个具体问题中,数据元素都具有相同的性质(元素值不一定相等),属于同一数据对象(数据元素类),
数据元素是数据元素类的一个实例。例如,在交通咨询系统的交通网中,所有的顶点是一个数据元素类,顶点A和顶点B各自代表一个城市,
是该数据元素类中的两个实例,其数据元素的值分别为A和B。
数据结构(Data Structure)是指互相之间存在着一种或多种关系的数据元素的集合。在任何问题中,
数据元素之间都不会是孤立的,在它们之间都存在着这样或那样的关系,这种数据元素之间的关系称为结构。
根据数据元素间关系的不同特性,通常有下列四类基本的结构:
⑴集合结构。在集合结构中,数据元素间的关系是“属于同一个集合”。集合是元素关系极为松散的一种结构。
⑵线性结构。该结构的数据元素之间存在着一对一的关系。
⑶树型结构。该结构的数据元素之间存在着一对多的关系。
⑷图形结构。该结构的数据元素之间存在着多对多的关系,图形结构也称作网状结构。
数据的逻辑结构: 集合、线性集合、树结构、图结构或者网状结构
数据的存储结构:顺序存储结构、链式存储结构、索引存储方法、散列存储方法、
数据类型就不用再说了吧。
算法的时间复杂度:简单一点可以理解为一个算法的效率高低,是度量算法是否会成为经典的一个重要依据。