第一章绪论
第1章绪论
1.1数据结构和研究内容
早期,主要用于数值计算
现在越来越多的被用于非数值的计算,如
-
学生学籍管理系统,计算机处理的对象是各种表,元素之间存在简单一对一的线性关系,因此这类问题的数学模型就是各类线性表,施加于对象上的操作有查找、插入和删除等。这类数学模型被称为“线性”数学模型。
-
人机对弈问题,人机对弈问题的数学模型就是如何将树结构表示为棋盘和棋子,算法是博弈的规则和策略。
-
最短路径问题,最短路径问题的数学模型就是图结构,算法是求出两点之间的最短路径。
小结
非数值计算问题的数学模型不再是数学方程,而是诸如线性表,数和图的数据结构。因此,简单地说,数据结构是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。
1.2 基本概念和术语
1.数据:
是能输入计算机且能被计算机处理的各种符号的集合。
- 信息的载体
- 是对客观事物符号化的表示
- 能够被计算机识别,存储和加工
2.数据元素:
数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,也简称为元素,或称为记录、结点或顶点。
数据项:构成数据元素的不可分割的最小单位。
数据、数据元素、数据项三者之间的关系:数据>数据元素>数据项
3.数据对象:
是性质相同的数据元素的集合,是数据的一个子集。
例如:整数的数据对象是集合N={0,±1,±2,……}
字母字符数据对象是集合C={'A','B',……,'Z'}
表1也可看作一个数据对象(由若干个学生信息组成)
数据元素与数据对象
-
数据元素——组成数据的基本单位
(与数据的关系:是集合的个体)
-
数据对象——性质相同的数据元素的集合
(与数据的关系:集合的子集)
4.数据结构:
相互之间存在一种或多种特定关系的数据元素的集合
数据结构是带 ”结构" 的数据元素的集合, “结构” 就是指数据元素之间存在的关系。
数据结构包括逻辑结构和存储结构两个层次。
1.逻辑结构:是从逻辑关系上描述数据
两个要素:
一是数据元素
二是关系(数据元素间的逻辑关系)
(1) 集合结构
数据元素之间除了 “属于同一集合” 的关系外,别无其他关系。
(2) 线性结构
数据元素之间存在一对一的关系。
(3) 树结构
数据元素之间存在一对多的关系。
(4) 图结构或网状结构
数据元素之间存在多对多的关系。
*非线性结构:集合结构、树结构和图结构
2. 存储结构
数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。
两种基本的存储结构:顺序存储结构和链式存储结构。
(1)顺序存储结构
借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
(2) 链式存储结构
要求所有的元素依次存放在一片连续的存储空间中,链式存储结构通常借助于程序设计语言的指针类型来描述
3.数据类型:
是一个值的集合和定义在这个值集上的一组操作的总称。
1.3抽象数据类型的表示与实现
一般指用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,包含三部分:数据对象,数据对象上关系的集合以及对数据对象的基本操作的集合
抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据对象:(数据对象的定义〉
数据关系:(数据关系的定义〉
基本操作:(基本操作的定义〉
} ADT 抽象数据类型名
2.基本操作定义格式
基本操作名(参数表)
初始条件:(初始条件描述〉
操作结果
1.4 算法和算法分析
1.算法的定义和特性
(1)有穷性
(2)确定性
(3)可行性
(4)输入(零个或多个)
(5)输出(一个或多个)
2.评价算法优劣的基本标准
(1)正确性
(2)可读性
(3)健壮性
(4)高效性
3.算法的时间复杂度
衡量算法效率的方法主要有两类:事后统计法和事前分析估算法。
语句频度:一条语句的重复执行次数
问题规模:是算法求解问题输入量的多少,是问题大小的本质表示,一般用整数n表示。问题规模n对不同的问题含义不同。
它表示随问题规模n的增大, 算法执行时间的增长率和f(n)的增长率相同, 称做算法的渐近时间复杂度, 简称时间复杂度
4.算法的空问复杂度
关于算法的存储空间需求,类似于算法的时间复杂度,我们采用渐近空间复杂度算法所需存储空间的量度,简称空间复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY