数据结构与算法基础-------基本概念和术语

1、数据

  • 能输入计算机且能被计算机处理的各种符号的集合

  • 信息的载体

  • 对客观事物符号化的表示

  • 能被计算机储存、识别和加工

  • 包括:

    • 数值型数据 :实数等;
    • 非数值型数据:文字、图像等;

2、数据元素和数据项

数据元素:

  • 是数据的基本单位,在计算机中通常当作一个整体处理或使用。
  • 也简称为元素、顶点、结点。
  • 可由多个数据项组成。
    在这里插入图片描述数据项:
  • 构成数据元素的不可分割的最小单位。
    在这里插入图片描述数据、数据元素、数据项的关系:
    数据 > 数据元素 > 数据项
    例:学籍表 > 个人信息 > 具体姓名…

3、数据对象

  • 是性质相同的数据元素的集合,是数据的一个子集。

4、数据结构

  • 数据元素之间不可能是孤立的,它们之间存在某种关系,数据元素间的相互关系就称为结构
  • 是指相互之间存在一种或多种关系的数据元素的集合
  • 或者说,数据结构是带结构的数据元素的集合。

数据结构包括以下内容:

  • 数据元素之间的逻辑关系,称为逻辑结构
  • 数据元素及其关系在计算机内存中的表示(又称映像),称为数据的物理结构或存储结构
  • 数据的运算和实现,即对数据可以施加的操作以及这些操作在相应的存储结构上的实现。

数据结构的两个层次:

  • 逻辑结构
    • 描述数据元素之间的逻辑关系
    • 与数据的存储无关,独立于计算机
    • 从具体问题中抽象出来的数学模型
  • 物理结构
    • 数据元素及其关系在计算机存储器中的结构
    • 是数据结构在计算机中的表示

逻辑结构和物理结构之间的关系:

  • 物理结构是逻辑关系的映像和数据元素的映像
  • 逻辑结构是数据结构的抽象,物理结构是数据结构的实现
  • 两者综合起来就建立了数据元素之间的关系

逻辑结构的种类

  • 划分方法一
    (1)线性结构
    有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
    例如:线性表、栈、队列、串
    (2)非线性结构
    一个结点可能有多个直接前趋和直接后继。
    例如:树、图

  • 划分方法二----四类基本逻辑结构
    (1)集合结构
    结构中的数据元素之间除了同属于一个集合的关系之外,无其他任何关系。
    (2)线性结构
    结构中的数据元素之间存在着一对一线性关系
    (3)树形结构
    结构中的数据元素之间存在一对多的层次关系。
    (4)图状结构或网状结构
    结构中的数据元素之间存在多对多的任意关系。
    在这里插入图片描述四种基本存储结构
    (1)顺序存储结构

  • 用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

  • C++中用数组来实现顺序存储结构
    例:在这里插入图片描述
    (2)链接存储结构

  • 用一组任意的存储单元存储数据元素,数据元素之间的关系用指针来表示。

  • C++用指针来实现链式存储结构
    例:在这里插入图片描述
    (3)索引存储结构

  • 在存储结点信息的同时,还建立附加的索引表
    例如:电话簿旁边的索引表。

(4)散列存储结构

  • 根据结点的关键字直接计算出该结点的存储地址。

5、数据类型和抽象数据类型

数据类型:

  • 是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。
    数据类型=值的集合+值集合上的一组操作

抽象数据类型:(Abstract Data Type,ADT)

  • 指一个数学模型以及定义在此数学模型上的一组操作。
  • 由用户定义,从问题中抽象出数据模型(逻辑结构)。
  • 还包括定义在数据模型上的一组抽象运算(相关操作)。
  • 不考虑计算机内的具体存储结构与运算的具体实现算法。

抽象数据类型的形式定义:
可用(D,S,P)表示:

  • D:是数据对象
  • S:是D中数据的关系集合
  • P:是对D的基本操作集合

定义格式:

ADT 抽象数据的类型名 {
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据的类型名

基本操作定义为:

  • 基本操作名(参数表)
    参数表:
    赋值参数:只为操作提供输入值
    引用参数:以&打头,除可提供输入值外,还将返回操作结果。
  • 初始条件的描述
  • 操作结果的描述
发布了14 篇原创文章 · 获赞 0 · 访问量 290

猜你喜欢

转载自blog.csdn.net/lhyhaiyan/article/details/104524842