数据结构基础概念

来源:互联网 发布:linux sort 倒序 编辑:程序博客网 时间:2024/06/04 18:43

数据结构的重要性

对于非数值计算程序,由于数据间关系复杂,数据量大,因此对于良好数据结构的要求要高于对于算法的要求。

数据结构的讨论层次

  • 抽象层:讨论数据的逻辑结构和所需的运算;
  • 实现层:讨论数据的存储表示和运算的实现。

数据的逻辑结构

  • 集合结构:元素间的次序是任意的;
  • 线性结构:元素之间构成有序序列,除头尾元素外,其余元素都有一个前驱和一个后继;
  • 树形结构:元素之间构成层次关系,除根元素没有前驱外,每个元素都有一个前驱和若干个后继;
  • 图形结构:最一般的逻辑结构,每个元素的前驱和后继数目都不限。

数据结构的运算

  • 创建运算(Create):创建一个空的数据结构;
  • 清除运算(Clear):删除数据结构中的所有数据元素;
  • 插入运算(Insert):在数据结构的指定位置上插入一个新的数据元素;
  • 删除运算(Remove):将数据结构中的某个数据元素删除;
  • 搜索运算(Search):在数据结构中搜索满足特定条件的数据元素;
  • 更新运算(Update):修改数据结构中的某个数据元素;
  • 访问运算(Visit):访问数据结构中的某个数据元素;
  • 遍历运算(Traverse):按照某种次序访问数据结构中的每一个数据元素, 使每个数据恰好被访问一次。

存储实现

  • 数据运算的实现通常称为运算实现;
    数据元素之间的逻辑关系实现通常被称为存储实现。
  • 一个物理结构通常由以下三部分组成:
    • 存储节点,每个节点存放一个数据;
    • 数据元素之间关系的存储,也就是逻辑结构的机内表示;
    • 附加信息,为方便运算而设置的一些“哑节点”,如链表中的头节点。
  • 存储节点之间的关联有以下4种实现方式:
    • 顺序实现:存储节点放在连续的存储区域, 节点逻辑关系通过存储位置体现;
    • 链接实现:存储节点分散在存储器的不同位置,节点关系通过指针显式指出;
    • 散列存储:专用于集合的存储方式,各节点均匀地分布在一块连续的存储区域内, 用一个散列函数将数据元素和存储位置关联起来;
    • 索引存储:所有的存储节点按照生成顺序连续存放, 另设置一个索引区域表示节点之间的关系。

算法分析

  • 算法质量的评判标准:
    • 正确性:正确实现预定功能;
    • 易读性:易于阅读和理解, 便于调试、修改和扩充;
    • 健壮性:算法能够对于环境变化作出处理,不产生不正确的运算结果;
    • 高效性:具有较高的时间和空间性能。
  • 算法分析:确定算法的时空性能
    • 时间性能(或时间复杂度):算法的计算量;
    • 空间性能(或空间复杂度):算法的存储量;
0 0
原创粉丝点击