数据结构概述

1、数据

    数据是信息的的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据大致可以分为

 数值型数据:整数、浮点数、复数、双精度数等

 非数值型数据:字符、字符串,以及文字、图形、图像、语音等数据

2、数据结构  Data_Structure={ D , R }
    数据结构有两个层次:抽象(逻辑结构)、实现(存储结构)

    数据的逻辑结构是指从解决问题的需要出发,为实现必要的功能所建立的数据结构,其属于用户(自定义)的视图,是面向问题的。

数据的物理结构是指数据应如何在计算机中存放,是数据逻辑结构的物理存储方式,其属于具体实现的视图,是面向计算机的。

当解决一个实际问题时,通常是具体(具体实际问题)到抽象(数据的逻辑结构),再抽象(数据的逻辑结构)到具体(数据的物理结构)

注:逻辑结构为用户自定义的数据间的逻辑关系,物理结构为逻辑结构在计算机中的实现,可有多种实现方式(如,用户自定义了栈,其规定了各数据元素为先进后出,而这种关系在计算机中可以有顺序、链式等多种实现方式)

3、数据的逻辑结构分类

    依据数据元素间的关系不同,分为线性结构与非线性结构。

线性结构也称为线性表,这种结构中所有数据元素都按某种次序排列在一个线性序列中(除首元素之外的任何的元素只有一个直接前驱,除尾元素之外的任何元素只有一个直接后驱)。根据对其中数据元素的存取方法的不同分为:

直接存取结构:数组(下标)、文件(记录号)....

顺序存取结构:栈、队列、优先级队列、....

字典结构:通过关键字key识别记录、....

    非线性结构中各元素不再保持在一个线性序列中,一个元素可能与零个或多个数据元素发生关系。根据关系的不同分为:

层次结构(层上的元素可以有零个或者多个下层元素):树、....

群结构(所有元素无顺序关系):集合、图、网络、....

另一说法:栈是一种顺序存取结构;集合是一种群结构;以此类推...

4、数据的物理结构分类

     数据的物理结构是数据的逻辑结构(数据间逻辑关系)在计算机中具体实现方法:

基于数组的顺序存储方法:将逻辑上相邻的元素放在物理位置上相邻的存储单元

基于链表的链式存储方法:逻辑关系由附加的指针指示

索引存储方法:存储元素信息的同时,还建立附加的索引表

散列存储方法:根据结点的关键码通过某个函数计算,直接得到存储地址

    注:顺序存储方法与链式存储方法为最常用的两种。

5、基本数据类型

数据类型是指一种类型以及定义于这个值集合上的一组操作的总称。

数据类型从本质上说是一种简单的逻辑结构(用户自定义的,用于描述实际问题所需要的数据的:整型、字符型...;只不过是用户已经定义好的惯例!)。对于用户而言,不必考虑其具体的物理结构/实现细节(如char8位 ...

注:数组既可以指一种数据类型(逻辑结构),又可以指一种实现方式(物理结构)。“数组”用于指一块连续的内存空间,每一个内存空间存储多个固定长度的数据项,从该意义上讲,其为一个存储结构;数组也可以表示一种由一组类型相同的数据项构成的数据类型,每一个数据项由一个特定的索引号(下标)来标识,从该意义上讲,其为一种数据类型(逻辑结构),可由多种不同的存储方法实现。

6、抽象数据类型ADT

抽象数据类型通常是指由用户自定义的,用于表示应用问题的数据模型(是用户根据实际需要,组织基本数据类型及相关服务(操作))。在C++中,使用关键字structclass等定义抽象数据类型。

抽象数据类型的特征是使用与实现分离,实现封装与信息隐蔽。即,在设计抽象数据类型时,把类型的声明与实现分离开来。从使用者的角度来看,只要了解该抽象数据类型的规格说明,就可以利用公共接口中的服务来使用属于这个类型的数据,而不必关心其物理实现。

    在面向对象的程序中,通过建立类来实现数据结构。类由基本数据类型及相关服务(操作)组成。C++中的标准类库都是用户自定义的抽象数据类型。

   

                          

你可能感兴趣的:(数据结构,struct,存储,Class,图形,structure)