数据结构1

99 阅读6分钟

1.1数据结构的研究内容

早期,计算机主要用于数值计算。随着计算机应用领域的扩展,计算机被越来越多的用于非数值计算。例如表、树和图之类的具有逻辑关系的数据。

数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。

1.2.1数据、数据元素、数据项和数据对象

1、数据(Data)

数据

是能输入计算机且被计算机处理的各种符号的集合
    信息的载体
    是对客观事务符号化的表示
    能够被计算机识别、存储和加工
包括:
    数值型的数据:整数、实数等
    非数值型的数据:文字、图片、图像、视频等

2、数据元素和数据项

数据元素
    是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
    也简称为元素,或称为记录、结点或顶点。
    一个数据元素可由多个数据项组成
数据项
    构成数据元素的不可分割的最小单位。
数据、数据元素、数据项三者之间的关系:
    数据>数据元素>数据项
    例:学生表>个人记录>学号、姓名...
数据对象
    是性质相同的数据元素的集合,是数据的一个子集

数据元素与数据对象

数据元素——组成数据的基本单位
    与数据的关系:是集合的个体
数据对象——性质相同的数据元素的集合
    与数据的关系:集合的子集

1.2.2数据结构

数据结构
    数据元素不是孤立存在的,他们之间存在着某种关系,数据元素相互之间的关系称为结构
    是指相互之间存在一种或多种特点关系的数据元素集合
    或者说,数据结构是带结构的数据元素的集合
数据结构包括一下三个方面的内容:
    1.数据元素之间的逻辑关系,也称为逻辑结构。
    2.数据元素及其关系在计算机内存中的表示(又称映像),称为数据的物理结构或数据的存储结构。
    3.数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现

数据结构的两个层次

逻辑结构
    描述数据元素之间的逻辑关系
    与数据的存储无关,独立于计算机
    是从具体问题抽象出来的数学模型
物理结构(存储结构)
    数据元素及其在计算机存储器中的结构(存储方式)
    是数据结构在计算机中的表示
逻辑结构与存储结构的关系:
    存储结构是逻辑关系的映像与元素本身的映像
    逻辑结构是数据结构的抽象,存储结构是数据结构的实现
    两者综合起来建立了数据元素之间的结构关系

逻辑结构的种类

划分方法一
    (1)线性结构
        有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
        例如:线性表、栈、列队、串
    (2)非线性结构
        一个结点可能有多个直接前趋和直接后继
        例如:树、图
划分方法二
    (1)集合
        结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系
    (2)线性结构
        结构中的元素之间存在着一对一的线性关系
    (3)树形结构
        结构中的数据元素之间存在着一对多的层次关系
    (4)图状结构或网状结构
        结构中的数据元素之间存在着多对多的任意关系

存储结构的种类

四种基本的存储结构:
    顺序存储结构
        用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
        C语言中用数组来实现顺序存储结构
    链式存储结构
        用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
        C语言中用指针来实现链式存储结构
    索引存储结构
        在存储结点信息的同时,还建立附加的索引表。
    散列存储结构
        根据结点的关键字直接计算出该结点的存储位置。

1.2.3数据类型和抽象数据类型

在使用高级程序设计语言编写程序是,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。
    例如,C语言中:
        提供int、char、float、double等基本数据结构类型
        数组、结构、共用体、枚举等构造数据类型
        还有指针、空(void)类型
        用户也可用typedef自己定义数据类型
一些最基本数据结构可以用数据类型来实现,如数组、字符串等
而另一些常用的数据结构,如栈、队列、树、图等,不能直接用数据类型来表示
​
高级语言中的数据类型明显的或隐含的规定了在程序执行期间变量和表达的所有可能得取值范围,以及在这些数值范围上允许进行的操作。
    例如:C语言中定义变量i为int类型,就表示i[-min,max]范围内的整数,在这个整数集上可以进行+、—、*、\、%等操作
​
数据类型的作用:
    约束变量或常量的取值范围
    约束变量或常量的操作
​
数据类型
    定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称
        数据类型=值的集合+值集合上的一组操作
        
抽象数据类型(ADT)
    是指一个数学模型以及定义在此数学模型上的一组操作
        由用户定义,从问题抽象出数据模型(逻辑结构)
        还包括定义在数据模型上的一组抽象运算(相关操作)
        不考虑计算机内的具体存储结构与运算的具体实现算法
        
抽象数据类型的形式定义
    抽象数据类型可用(D、S、P)三元组表示
        其中:D是数据对象
             S是D上的关系集
             P是对D的基本操作集
    例如:Circle的定义
        ADT Circle{
            数据对象:D={r,x,y|r,x,y均为实数}
            数据关系:R={<r,x,y>|r是半径,<x,y>是圆心坐标}
            基本操作:
                Circle(&C,r,x,y)
                    操作结果:构造一个圆
                double Area(C)
                    初始条件:圆已存在
                    操作结果:计算面积
                double Circimference(C)
                    初始条件:圆已存在
                    操作结果:计算周长
        }ADT Circle