数据结构这门课

    数据结构作为一个科目来说,它是研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。描述问题不再是数学模型而是图表树等

注意:数据结构并非计算机所特有,它是研究对象是非数值,比如:一个图书馆图书的收藏,可以把图书看做是数据,然后研究图书科目之间的关系。这就是一种数据结构,与计算机并不挂钩的数据结构。 我们作为计算机专业的一员,就要用计算机的知识去学习这一门课程。用计算机的语言去认识和描述数据结构。

 之后所有的讲解全都是围绕C语言来描述数据结构。

数据结构在计算机中的地位

 

 

数据结构 名词概念

数据:对客观事物的表示。所有能被输入到计算机中,且能被计算机处理的符号的集合。

       可以是图片、数字、声音等等。

数据元素:(数据的基本单位)是数据(集合)中的一个“个体”,一个数据元素可由若干数据项组成。如下图所示:

 

 

 一个学生的信息是一个数据元素,而里面的各个内容为数据项,数据项是数据不可分割的最小单位。

数据对象: 性质相同的数据元素的集合。比如:A={0,1,2,3..n}

数据结构的概念理解

   相互之间存在关系(一种或多种)的数据元素的集合。而每个元素相互之间的关系为结构。比如:一个学生信息中的一个性别为男的学生,那么姓名就不可能为张小花(也就是说不可能为一个女孩的名字),这就是姓名与性别之间的一种关系,也叫做结构。

   也可以说,数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的联系。

数据结构的逻辑形式定义:

   数据结构是一个二元组

     Data_Structures = (D, S)  其中:D 是数据元素的有限集,是 D上关系的有限集。

  比如:复数由实部和虚部构成(构成元素),两者之间存在着一种次序关系(逻辑关系)。

       可以表示为:

              Complex=(C,R)其中,C={ c1,c2}  R={<c1,c2>}

       说明:< >表示有序数对,用图示法表示时画箭头

            ( )表示无序数对,用图示法表示时画线段

数据结构的三个部分:

  数据结构我们用三中不同的结构来描述和认识它。 逻辑结构、存储结构(物理结构)、运算结构。

逻辑结构:这种结构反应了元素之间的逻辑关系,即元素的前后关系,与所在的物理位置无关。

逻辑结构分为  线性结构、树形结构、图形结构、结合结构。分别为以下:

   

 

 存储结构: 存储结构又叫做物理结构。存储结构是数据结构在计算机中的位置表示(又称为映射)。

在存续结构中讨论的对象是bit组成的位串。

 存续结构是逻辑结构的实现,有两种:

         顺序映射------->顺序存储结构:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系

     非顺序映射------->链式存储结构:借助指示元素存储地址的指针表示数据元素之间的逻辑关系

存储结构的描述需要数据类型,例如:可以用C语言中的数组描述顺序结构,用指针描述链式结构。

关于物理结构和逻辑结构

   许多学员们对于物理结构和逻辑结构就是不理解,对于它们的描述也不能接受。

  首先,要区分开它们描述的对象: 物理结构所研究的对象时从微观上来讲的,逻辑结构研究的对象是从宏观上来讲的。比如:高中时我们学过的生物,研究生物的时候我们是以细胞作为最基本的单位,为什么我们不以分子和原子作为单位呢?因为那根本就没有意义,研究生物管分子原子干什么。但是我们学习物理的时候,是以电子原子为单位,我们研究电子原子的运动,那为什么我们不以整个物体为单位呢?因为那也是没有意义的。同样的道理,物理结构是以研究存储为基本单位的结构,逻辑结构是以研究关系作为基本单位的结构。

  要明确两种结构之间的关系: 逻辑关系:元素有一定的相邻关系排序,但不一定挨着

             物理关系:把一个元素放到一个空间

             顺序结构: 在逻辑上相邻的元素在物理上也相邻

             链表结构:在逻辑上相邻的元素在物理上不一定相邻

数据类型 

   基本数据类型:一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称.比如;整型是整数的一类集合

   抽象数据类型(ADT

  除了基本数据类型之外的数据类型

由用户定义,用以表示应用问题的数据模型由基本的数据类型组成并包括一组相关的(或称操作)

  与基本数据类型比较,ADT是可以自己定义的,而基本数据类型是以个常量,不能自己定义。

ADT的两个重要特征

   数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。

   数据封装:将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

抽象数据类型的描述方法

    抽象数据类型可用(DSP)三元组表示。

  其中:是数据对象; 是 上的关系集; 是对 的基本操作集。

ADT 抽象数据类型名 {

   数据对象:〈数据对象的定义〉

   数据关系:〈数据关系的定义〉

   基本操作:〈基本操作的定义〉

} ADT 抽象数据类型名