数据结构概述

基本概念

数据,数据元素,数据对象

数据是客观事物的符号表示。数据元素是数据的基本单位,一个数据元素又可以由若干个数据项组成。包括两种:初等项不可分割;组合项,它又由若干个数据项组成。

数据对象是性质相同的数据元素的集合,是数据集合的一个子集。数据元素则是对象集合中的数据成员。

数据结构

数据元素之间存在一种或多种特定的关系,这种关系称为结构。

Data Structure = (D, R)

D为数据元素的有限集,R为数据对象中所有数据元素之间关系的有限集。

一般表示

  1. 数据元素及数据元素之间的逻辑关系,也称为数据的逻辑结构;
  2. 数据元素及数据元素之间的关系在计算机中的存储表示,也称为数据的存储结构或物理结构;
  3. 数据的运算,即对数据施加的操作。

数据结构分类

对于一个数据结构而言,每一个数据元素可以称为一个结点,数据结构中所包含的数据元素之间的关系就是结点之间的关系。

比如对关系<k, k'>,称k'是k的后继,k是k'的前驱,k和k'互为相邻结点。没有后继称为终端结点,没有前驱称为开始结点。

  • 线性结构:一个结点最多只有一个前驱与后继。
  • 非线性结构,树:一个结点最多只有一个前驱,而可以有多个后继。
  • 非线性结构,图;对结点的前驱与后继数量不做限制。

存储方法:

  • 顺序存储:逻辑上相邻的结点存储在物理位置相邻的存储单元里。通常用数据描述
  • 链接存储:结点之间的逻辑关系由附加的指针表示。
  • 索引存储:在建立存储结点数据的同时还,建立附加的索引表。
  • 散列存储:根据结点的关键字计算出该结点的存储地址,然后按存储地址存放该关键字对应的数据元素。

数据类型

基本类型与组合类型

抽象数据类型

数据抽象是一种对数据和操作数据算法的抽象。数据抽象包括模块化和信息隐蔽两种抽象。

抽象数据类型(Abstract Data Type, ADT)是指抽象数据的组织和与之相关的操作。可以看作是数据的逻辑结构及在逻辑结构上定义的操作。可用如下形式描述。

ADT ADT_NAME
{
    Data:                   /*数据说明*/
        /*数据元素之间逻辑关系的描述*/
    Operations:             /*操作说明*/
        Operation1
            Input:          /*对输入数据的说明*/
            preconditions:  /*执行操作前系统应该满足的状态*/
            Process:        /*对数据执行的操作*/
            Output:         /*对返回数据的说明*/
            Postconditions: /*执行操作后系统的状态*/
        Operation2
            ...
}/*ADT*/

算法和算法分析

算法概念

通常人们将算法定义为一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算系列。算法应该具有以下特性:

  • 输入
  • 输出
  • 确定性
  • 有穷性
  • 可靠性

把一个问题的功能需求转变为一个算法,使用的方法是自顶向下,逐步求精的结构批程序设计方法。

算法分析

  • 正确性
  • 可读性
  • 健壮性
  • 时间效率和存储占用量。

用O表示复杂度,O定义:若T(n)和f(n)是定义在正整数集合上的两个函数,则$T(n)=O(f(n))$表示存在正的常数C和n0使得当$n \ge n_0$时都满足$0\le T(n) \le C \times f(n)$

(渐近)时间复杂度由$T(n) = O(f(n))$表示,而空间复杂度由$ S(n) = O(f(n))$ 表示

一般讨论最坏时间复杂度与最好时间复杂度

最后修改:2023 年 01 月 05 日
如果觉得我的文章对你有用,留个言就可以了