系列目录
1.1 数据结构的研究内容
数据结构的研究内容为:
研究非数值计算的程序设计问题中计算机的操作对象以及它们之间关系和操作
1.2 基本概念及术语
数据结构的两个层次
逻辑结构:
数据元素间抽象化的相互关系,与数据的存储无关,独立于及玄机,它是从具体问题抽象出来的数学模型。
存储结构(物理结构):
数据元素及其关系在计算机存储器中的存储方式。
逻辑结构
划分方法一
(1)线性结构——
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。
例如:线性表、栈、队列、串
(2)非线性结构——
一个结点可能有多个直接前趋和直接后继。
例如:树、图
划分方法二
1.集合
元素之间除属于同一集合外,无其他关系。
2.线性结构
一个对一个。
3.树形结构
一个对多个。
4.图形结构
多个对多个。
存储结构
分为两类:
顺序存储结构——借助元素在存储器中的相对位置来表示数据元素间的逻辑关系
链式存储结构——借助只是元素存储地址的指针表示数据元素间的逻辑关系
数据的运算
对于一中数据结构,常见的运算(运算不同数据结构不同):
.插入
.删除
.修改
.查找
.排序
数据类型
定义:在一种程序设计语言中,变量所具有的数据种类
数据类型是一组性质相同的值的集合,以及定义于这个集合上的一组运算的总称
抽象数据类型
- 更高层次的数据抽象
- 由用户定义,可以表示应用问题的数据模型
- 有基本的数据类型组成,并包括一组相关的操作
1.3 抽象数据类型的表示与实现
抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现
上机时要用具体语言实现,如C或C++等
1.4 算法和算法分析
算法定义:
一个又穷的指令集,这些指令为解决某一特定任务规定了一个运算序列
算法的描述:
- 自然语言
- 流程图
- 程序设计语言
- 伪码
-算法的特性: - 输入: 有0个或多个输出
- 输出: 有一个或多个输出
- 确定性:每步定义都是确切、无歧义的
- 有穷性:算法应在执行有穷步后结束
- 有效性:每一条运算应足够基本
算法的评价: - 正确性
- 可读性
- 健壮性
- 高效性(时间代价和空间代价)
算法的效率的度量
算法效率:用更具该算法编制的程序在计算机上执行所消耗的时间来度量
两种方法:事后统计、事前分析估计
时间复杂度的渐进表示法
基本语句重复执行的次数:
算法中重复执行次数和算法的执行时间成正比的语句
对算法运行时间贡献最大
问题规模:
n越大算法的执行时间越长
- 排序:n为记录数
- 矩阵:n为矩阵的阶数
- 多项式:n为多项式的项数
- 集合:n为元素个数
- 树:n为树的结点个数
- 图:n为图的顶点数或边数