第1章 基本概念 —— 1.2 数据结构

来源:互联网 发布:淘宝的芦荟胶是真的吗 编辑:程序博客网 时间:2024/06/15 15:12

1.2.1 数据结构是关于三个部分的内容:数据对象的组织方式、操作集、算法

  1. 数据对象在计算机中的组织方式(图书摆放),包含以下两个概念:
    逻辑结构:如书籍顺序排列,每本书是一个数据对象,从第一本书开始编号,每本书的位置可以由它的编号唯一确定,那么这个数据对象集的逻辑结构就是“线性”的,因为数据对象都串到一条线上,编号跟书是“1对1”的关系。
    物理存储结构:把书的信息存进计算机时,可以设计一个结构体来记录一本书,书的集合可以用结构体的数组来存储,也可以用结构体的链表来存储。数组或者链表就是数据对象集在计算机中的物理存储结构。树和图也是物理存储结构。
  2. 操作集(插入、查找)。
  3. 实现这些操作的算法。

1.2.2 抽象数据类型 (Abstract Data Type)

数据类型:数据对象集 + 数据集合相关联的操作集。
抽象:描述数据类型的方法不依赖于具体实现,即只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题。

  • 与存放数据的机器无关;
  • 与数据存储的物理结构无关;
  • 与实现操作的算法和编程语言均无关。

示例:“矩阵”的抽象数据类型定义。

  • 类型名称: 矩阵(Matrix)
  • 数据对象集: 一个MN的矩阵
    由MN个三元组< a, i, j >构成,其中a是矩阵元素的值,i是元素所在的行号,j是元素所在的列号。
  • 操作集: 对于任意矩阵A、B、C Matrix,以及整数i、j、M、N
  • Matrix Create( int M, int N ):返回一个MN的空矩阵;矩阵类型为Matrix;
  • int GetMaxRow( Matrix A ):返回矩阵A的总行数;
  • int GetMaxCol( Matrix A ):返回矩阵A的总列数;
  • ElementType GetEntry( Matrix A, int i, int j):返回矩阵A的第i行、第j列的元素;返回值类型为ElementType,也是一个抽象数据类型,能够自定义,可以是#define ElementType int也可以是#define ElementType char等。
  • Matrix Add( Matrix A, Matrix B ):如果A和B的行、列数一致,则返回矩阵C=A+B,否则返回错误标志;
  • Matrix Multiply( Matrix A, Matrix B ):如果A的列数等于B的行数,则返回矩阵C=AB,否则返回错误标志;