数据结构
一、 数据概述
数据结构的起源
1968年美国唐•欧•克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构语其操作的著作。我们一般认为本书开创了数据结构的系统概念。
数据结构发展经历的三个阶段:
- 无结构阶段 40-60年代
- 结构化阶段 60-80年代——在此阶段N.Wirth教授提出了程序=数据结构+算法的概念
- 面向对象阶段 80年代-现在
数据的概念
数据是信息的载体,它能够被计算机识别、存储、加工处理
数据的分类
数值型(原子类型):整数、实数、布尔值等
非数值型(结构类型):字符、声音、图像等
数据的元素
数据元素是数据的基本单位
数据元素是由数据项组成
数据对象
数据对象是相同元素的集合,是数据的一个子集。如字符集合C={‘A’,’B’,’C,…} 。
二、数据结构
数据结构(Data Structure):是指相互之间具有(存在)一定联系(关系)的数据元素的集合。元素之间的相互联系(关系)称为逻辑结构。
数据结构的三个组成部分
- 逻辑结构:D_S=(D,S)===>程序乘此
- 存储结构:数据库,内存
- 数据操作:CRUD操作
数据元素之间的逻辑结构有四种基本类型
- 集合 :同属一个集合,无其他关系
- 线性结构:一对一的关系
- 树型结构:一对多的关系
- 图状结构或网状结构:多对多的关系
存储结构
顺序存储方法:数据元素在内存中按序连续存储, 结点间的逻辑关系由存储单元的邻接关系来体现
链接存储方法:用指针指出其直接后继结点的存储位置, 结点间的逻辑关系由存储单元的邻接关系来体现
逻辑结构与存储结构关系
- 算法的设计取决于逻辑结构
- 算法的实现依赖于存储结构
抽象数据类型(Abstract Data Type,简称ADT)
分 类 = { D : 数 据 对 象 S : 是 D 上 的 关 系 集 P : 是 对 D 的 基 本 操 作 集 分类=\left\{ \begin{matrix} D:数据对象 \\S:是D上的关系集\\P:是对D的基本操作集 \end{matrix} \right. 分类=⎩⎨⎧D:数据对象S:是D上的关系集P:是对D的基本操作集
算法
算法的特性:
- 有穷性:必须有结束
- 确定性:必须由确切的含义
- 可行性:必须是可执行的有意义的
- 输入
- 输出
算法设计的要求
- 正确性:算法应满足具体问题的需求。
- 可读性:算法应容易供人阅读和交流。
- 健壮性: 算法应具有容错处理。
- 通用性:算法应具有一般性。
算法效率的度量
表示方法
时间复杂度:O(f(n))
空间复杂度:S(n)=O(f(n))
程序运行所需的存储空间包括以下两部分:
(1)固定部分
(2)可变部分