数据结构是什么?
数据结构是相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 ,是计算机的存储、组织数据的方式。
在早期中,计算机主要是科学家们被用来数值计算。但如今,随着时代的发展,计算机已经除了用于数值计算,更多的是使用在处理字符、表格、图像、视频,音乐等多种具有一定结构的数据。而对于错综复杂的数据,只有对数据进行理性化的分析,合理化的处理,才能对其有效的处理。而数据结构,就是对数据的一种合理化分析所的出的结论。合理的数据结构对于数据的分析,处理具有极大的帮助。
基本概念与术语
1.数据(Data) : 数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
(数据是客观的表现。是所有能够输入到计算机中并被计算机程序所处理的符号的总称。例如一张成绩表,就是对成绩的一种客观表现,我们可以通过成绩表,清楚的了解到各科学生的成绩)
2.数据元素(Data Element):数据元素是数据的基本单位,有时也被称作为结点或记录。在计算机中,通常作为一个整体进行考虑和处理。
(数据元素是数据的基本单位,数据是由有众多的数据元素组成的。例如成绩表是由各个学生的成绩所组成。单个学生的成绩就是数据元素,而成绩表就是数据。)
3.数据项(Data Item):数据项是组成数据元素的,具有独立意义的,不可分割的最小单位。数据项通常用于表示实体的某种属性。
(数据项是数据的最小单位,具有独立意义且不可分割性。通常是用于表示实体的某种属性。例如,在成绩表中,学生们单个的成绩就是数据项,语文成绩,数学成绩,等等。这些成绩具有独立的意义,能够表示一名学生的某科的成绩属性。且具有不可分割性。)
4.数据对象(Data Object):数据对象是性质相同的数据元素的集合。是数据的一个子集。
(数据对象是性质相同的数据元素的集合。例如,在一张成绩表中,具有学生的学号和姓名已经班级等信息,还包含学生的各项成绩以及各种平均成绩和排名。那么可以说成绩表中(数据)是由学生的基本信息(数据对象)和学生的成绩(数据对象)组成。因为数据对象是数据元素的集合,而数据元素是数据的基本单位,所以并不矛盾。)
4种有关数据基本概念如图:
数据结构的两种层次
数据结构包括逻辑结构和存储结构两个层次。
逻辑结构:
数据的逻辑结构是从数据的逻辑关系上进行描述数据。它与数据的存储无关,是独立与计算机的。是将具体问题抽象出来的数学模型。
逻辑结构拥有两个要素:数据元素和关系。
数据元素是数据的基本单位,而关系是指数据元素之间的逻辑关系。根据数据元素之间关系的不同特性,通常可以分为四类基础结构。
集合结构:集合结构是一种松散的结构。该结构使得数据除了“属于同一种集合”的关系外,无其它关系。
线性结构:线性结构是一个有序数据元素的集合。该结构存在一对一的关系。
树结构:树结构是一种将数据元素按分支关系组织起来的结构。该结构存在一对多的关系。
图结构:图结构是一种比树更加复杂的结构,该结构的任意两个结点都有可能具有关联性。存在多对多的关系。
在四种基本结构中,可以分为线性结构和非线性结构。整体如下:
线性结构包含:线性表,数组,栈,队列,串,广义表。
非线性结构包含:树,图,集合。(树有常见的二叉树,森林,B树,B-\B+树等等,图分为有向图和无向图)。
存储结构:
数据对象在计算机中的存储表达成为数据的存储结构。对于计算机的任何数据,无论是什么形式,都是以二进制存储的。而在内存条是一维线性结构,数据的处理都是在内存条中进行的。所以,数据的存储结构可以分为顺序存储和链式存储。
顺序存储:所有的数据元素依次存放在一片连续的内存空间中,通过相对位置来形成联系。是连续的存储方式。通常是以数组的形式进行表示。
链式存储:所有的数据元素通过结点的附加空间的指针字段来形成联系。数据元素在内存中的数据通常是不连续的。是不连续的存储方式。通常是以链表的形式进行表示。
(数据结构是将具体问题抽象化后,寻找出其相对应的数据元素以及数据元素之间的关系。再对其考虑是使用顺序存储还是用链式存储。注意:逻辑结构中的关系与存储结构没有关系。线性结构既可以使用存储结构,也可以使用链式存储,非线性结构也是一样。)
数据类型和抽象数据类型
数据类型(Data Type):数据类型是高级程序设计语言中的一个基本概念。是一个值的集合和定义在这个值集上面的一组操作的总称。
(数据类型一般在程序设计语言中都有着其基本的数据类型,再由这些基本数据类型构成复杂的数据类型。)
抽象数据类型(Abstract Data Type):一般是值用户定义的,表示应用问题的数学模型。具体包括三部分:数据对象,数据对象上关系的集合以及数据对象的基本操作的集合。
抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据对象:(数据对象的定义)
数据关系:(数据关系的定义)
基本操作:(基本操作的定义)
}ADT 抽象数据类型名
抽象数据类型的概念与面向对象的方法的思想是一致的。
总结
数据结构是一门综合性的学科。其具有一定的抽象性,是将现实生活中各种各样的数据进行抽象化,使用不同的数据结构用来对现实世界模拟。
反正数据结构肯定是很重要的就对了。毕竟:数据结构+算法=程序 嘛。
(嘻嘻,本次记录借鉴了严蔚敏的数据结构C语言版,是由人民邮电出版社出版的。同时也有部分参考了百度百科上面的j。数据结构与算法对于IT专业来说,考研应该是必须的。这一次记录让我对与数据结构再一次学习了一下。也对自己的数据结构的知识有了一定的认识。感觉自己又学到许多。)