数据结构基础讲义PPT课件
数据结构基础讲义共47页

56、极端的法规,就是极端的不公。 ——西 塞罗 57、法律一旦成为人们的需要,人们 就不再 配享受 自由了 。—— 毕达哥 拉斯 58、法律规定的惩罚不是为了私人的 利益, 而是为 了公共 的利益 ;一部 分靠有 害的强 制,一 部分靠 榜样的 效力。 ——格 老秀斯 59、假如没有法律他们会更快乐的话 ,那么 法律作 为一件 无用之 物自己 就会消 灭。— —洛克
55、 为 中 华 之 崛起而 读书。 ——周 恩来
Hale Waihona Puke 60、人民的幸福是至高无个的法。— —西塞 罗
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
《数据结构》课件

查找操作
顺序查找
二分查找
链表查找
在顺序存储结构的线性表中,查找操 作需要从线性表的第一个节点开始, 逐个比较节点的数据域,直到找到目 标数据或遍历完整个线性表。时间复 杂度为O(n)。
在有序的顺序存储结构的线性表中, 查找操作可以采用二分查找算法。每 次比较目标数据与中间节点的数据域 ,如果目标数据大于中间节点,则在 右半部分继续查找;否则在左半部分 查找。时间复杂度为O(log n)。
数据结构是算法的基础。许多算法的实现需要依赖于特定的数据结构, 因此掌握常见的数据结构是编写高效算法的关键。
数据结构在解决实际问题中具有广泛应用。无论是操作系统、数据库系 统、网络通信还是人工智能等领域,数据结构都发挥着重要的作用。
数据结构的分类
根据数据的逻辑关系,数据结构可以分为线性结构和非线 性结构。线性结构如数组、链表、栈和队列等,非线性结 构如树形结构和图形结构等。
04
数据结构操作
插入操作
顺序插入
在顺序存储结构的线性表中,插入操作 需要找到插入位置的前驱节点,修改前 驱节点的指针,使其指向新节点,然后 让新节点指向后继节点。如果线性表的 第一个节点是空节点,则将新节点作为 第一个节点。
VS
链式插入
在链式存储结构的线性表中,插入操作需 要找到插入位置的前驱节点,修改前驱节 点的指针,使其指向新节点。如果线性表 的第一个节点是空节点,则将新节点作为 第一个节点。
图
01
02
03
04
图是一种非线性数据结构,由 节点和边组成,其中节点表示 数据元素,边表示节点之间的
关系。
图具有网络结构,节点之间的 关系可以是任意复杂的,包括
双向、单向、无向等。
数据结构基础PPT课件

void perm (char *a, const int k,const int n) { // n 是数组a的元素个数,生成a[k],…,a[n-1]的全排列
int i; if (k = = n-1) { // 终止条件,输出排列
for ( i=0; i<n; i++) cout << a[i] << “ ”; // 输出包括前 // 缀,以构成整个问题的解
29
其中各语句的程序步数如下所示:
其总程序步数是2n+3。
30
例的1.6程设序r步su数m如(a下, n:)的程序步数为Trsum(n),其各语句
= 可2+见Tr,sum当(nn-1=)。0时Trsum(0) = 2;当n > 0时Trsum(n)
31
通过反复代入可得: Trsum(n) = 2+ Trsum(n-1) = 2+2+Trsum(n-2) = 2*2+ Trsum(n-2) = 2+2+2+ Trsum(n-3) = 2*3+ Trsum(n-3) … = 2n+ Trsum(0) = 2n+2 所以rsum的程序步数为2n+2。
注意:这些定义不依赖于数据对象的具体表示,也
没有给出操作实现的过程。
10
数据抽象和封装机制的意义: (1)简化软件开发:
假设一个问题经分析将使用A、B、C三个数据 类型和协调代码求解。
(a)四位程序员,可由其中三位程序员各开发 一个数据类型,另一位程序员实现协调代码。
(b)一位程序员,数据抽象也可减少其在某一 具体时间需要考虑的范围。
数据结构ppt课件完整版

针对有序数据集合,每次通过中间元素将 待查找区间缩小为之前的一半,直到找到 元素或区间为空。
哈希查找
树形查找
通过哈希函数将数据映射到哈希表中,实 现快速查找。
如二叉搜索树、平衡树等,通过树形结构实 现高效查找。
排序算法分类及实现原理
插入排序
将待排序元素逐个插入到已排序序列中,直到所有元素均插入完毕。
由n(n>=0)个具有相同类型 的数据元素(结点)a1,a2,
...,an组成的有序序列。
同一性
每个元素必须是同一类型的数 据。
有序性
元素之间具有一对一的前驱和 后继关系,即除首尾元素外, 每个元素都有一个前驱和一个 后继。
可变性
线性表的长度可变,即可以插 入或删除元素。
顺序存储结构与链式存储结构比较
定义
用一段连续的存储单元依次存储线性 表的数据元素。
优点
可以随机存取表中任一元素,且存取 时间复杂度为O(1)。
顺序存储结构与链式存储结构比较
• 缺点:插入和删除操作需要移动大量元素,时间 复杂度高;需要预先分配存储空间,容易造成空 间浪费。
顺序存储结构与链式存储结构比较
定义
用一组任意的存储单元存储线性 表的数据元素(这组存储单元可 以是连续的,也可以是不连续的
查找操作
查找指定元素的位置。
遍历操作
访问线性表中的每个元素。
销毁操作
释放线性表占用的存储空间。
03
栈和队列
栈定义及特点
栈(Stack)是一种特殊的线性数据结构,其数据的存 取遵循后进先出(LIFO, Last In First Out)的原则。 栈的特点
具有记忆功能,能保存数据的状态。
栈的基本操作包括入栈(push)、出栈(pop)、查 看栈顶元素(top)等。 只能在栈顶进行数据的插入和删除操作。
03数据结构基本概念PPT课件

数据结构研究的主要内容
①数据元素之间的逻辑关系 ②采用的存储结构 ③对这些数据元素采用何种方式进行操作
2020/11/23
9
例:数据结构——学生成绩表
✓数据元素(学号、姓名、科目、成绩) ✓数据元素之间的关系(逻辑结构) ✓数据元素的存储(物理结构) ✓对数据元素的操作(增、减、查找、修改等)
33
数据结构上的常见操作
遍历、插入、更新、 删除、 查找、 排序 注意:每个问题都有一种和多种算法
找到效率最高的 以最容易理解的方式设计 设计的算法不容易出错或出错情况较少
2020/11/23
34
算法
算法的评价
时间复杂度
代码的执行时间,一般是以代码实际执行的指令数量(条)
空间复杂度
2020/11/23
11
数据的逻辑结构
数据元素之间关系的描述 描述逻辑结构的方法:描述法和图示法 描述法:
二元组 B = ( K, R )
K:元素集合 R:元素间关系的集合
注意:元素间的关系一般抽象为前驱与后继关 系,即表明结构中,一个元素的前一个元素是 谁,它的后一个元素又是谁
2020/11/23
24
索引存储
方法
为放在内存 中的元素建 索引表
K1
立索引表
1
K3
元素可以离 2
散存放
3
K4
通过查索引 4 表找到需要 索引号
K2
的元素
2020/11/23
联想:图书馆的查书卡
0300 0301 0302 0303 0304 0305 0306 0307 0308 0309
25
散列存储
散列存储方法
2020/11/23
《数据结构》课件

第二章 线性表
1
线性表的顺序存储结构
2
线性表的顺序存储结构使用数组来存储元素,
可以快速随机访问元素。
3
线性表的常见操作
4
线性表支持常见的操作,包括插入、删除、 查找等,可以灵活地操作其中的元素。
线性表的定义和实现
线性表是一种数据结构,它包含一组有序的 元素,可以通过数组和链表来实现。
线性表的链式存储结构
线性表的链式存储结构使用链表来存储元素, 支持动态扩展和插入删除操作。
第三章 栈与队列
栈的定义和实现
栈是一种特殊的线性表,只能在一 端进行插入和删除操作,遵循后进 先出的原则。
队列的定义和实现
队列是一种特殊的线性表,只能在 一端进行插入操作,在另一端进行 删除操作,遵循先进先出的原则。
栈和队列的应用场景和操作
哈希表是一种高效的查找数据结构, 通过哈希函数将关键字映射到数组 中,实现快速查找。
排序算法包括冒泡排序、插入排序 和快速排序等,可以根据数据规模 和性能要求选择合适的算法。
结语
数据结构的学习心得 总结
学习数据结构需要掌握基本概念 和常见操作,通过实践和练习加 深理解和熟练度。
下一步学习计划的安 排
在掌握基本数据结构的基础上, 可以进一步学习高级数据结构和 算法,提升编程技能。
相关学习资源推荐
推荐一些经典的数据结构教材和 在线学习资源,如《算法导论》 和LeetCode等。
栈和队列在计算机科学中有许多应 用,如函数调用、表达式求值和作 业调度等。
第四章 树与二叉树
树的定义和性质
树是由节点和边组成的一种非线性数据结构,每个 节点可以有多个子节点。
二叉树的遍历方式
二叉树的遍历方式包括前序遍历、中序遍历和后序 遍历,可以按不同顺序输出节点的值。
数据结构讲义精品PPT课件

003 陈诚 02 男 19840910 638
… … … ……
…
数据元素
数据结构 具有结构的数据元素的集合。它包 括数据元素的逻辑结构、存储结构和相适应的 运算。
逻辑结构
数据元素之间的逻辑关系,与计算机无关。 可用一个二元组表示:Data_Structure = (D,R) D:数据元素的有穷集合,R:集合D上关系的有穷集合。
《The Art of Computer Programming》
Art Evans
数据结构在计算机科学中是一门综合性的专业基础课, 也是计算机专业的必修课,是其它许多课程的先修课程, 是设计编译程序、操作系统、数据库系统等系统程序和 大型应用程序的重要基础。
1.2 基本概念和术语
基本术语
数据 被计算机加工处理的对象。 数据元素(记录、表目) 数据的基本单位,
几种常用的运算有: (1)建立数据结构 (2)清除数据结构 (3)插入数据元素 (4)删除数据元素 (5)排序
(6)检索* (7)更新 (8)判空和判满* (9)求长*
*操作为引用型操作,即数据值不发生变化; 其它为加工型操作。
抽象数据类型
抽象数据类型 ADT( Abstract Data Type ): 数据类型概念的引伸。指一个数学模型以及在其上定义的操作集 合,与计算机无关。 数据类型:一组值的集合和定义在其上的一组操作的总称。
抽象数据类型的描述方法
ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉
} ADT 抽象数据类型名
其中基本操作的定义格式为:
基本操作名(参数表) 初始条件:〈初始条件描述〉 操作结果:〈操作结果描述〉
绪论(数据结构教程PPT课件)

在网络传输或文件读写过程中,使 用队列作为缓冲区,暂时存储待处 理的数据,以提高处理效率。
04
串、数组和广义表
串定义及基本操作
串的基本操作包括
赋值操作、连接操作、求串长、比较操作、定位操作等。
串的存储结构包括
顺序存储结构和链式存储结构。
串模式匹配算法
串模式匹配算法是指在一个主串中寻找一个子串(模式串)的位置。
函数调用
在程序执行过程中,使用 栈来保存函数调用的信息, 如函数参数、局部变量和 返回地址等。
队列定义及基本操作
01
队列(Queue)是一种特殊的线性数据结构,其操作在表 的两端进行。一端称为队头(front),另一端称为队尾 (rear)。
02
队列的基本操作包括
03
入队(enqueue):在队尾插入一个元素。
3
线性表的抽象数据类型描述
数据类型名称、数据对象集合、操作集合等
线性表顺序存储结构
01
顺序存储结构的定义
用一段地址连续的存储单元依次存储线性表的数据元素
02
顺序存储结构的基本操作实现
创建、初始化、销毁、判空、清空、求长度、获取元素、修改元素等操
作的实现方法
03
顺序存储结构的优缺点
无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速
线索二叉树
线索二叉树是对二叉树的每个结点增设两个标志位以及一条线索而得到的。根据线索性质的不同,线索二叉树可分为前序线 索二叉树、中序线索二叉树和后序线索二叉树三种。这里以中序线索二叉树为例来说明线索二叉树的构造方法。
中序线索二叉树的构造规则是:若将二叉树的中序遍历序列中的每个结点都看作是相应指针域为空的指针,则称这些指针为 线索,而指向其前驱或后继的指针称为线索指针。加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树 (Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种 。
数据结构课程讲义ppt课件

...
...
... 数据集
控制区域
控制区
间
46
2. 控制区间是用户进行一次存取的 逻辑单位,可看成是一个逻辑磁道。 但它的实际大小和物理磁道无关。
控制区域由若干控制区间和它们
的索引项组成,可看成是一个逻辑柱面。
VSAM文件初建时,每个控制区 间内的记录数不足额定数,并且有的 控制区间内的记录数为零。
23
假设对外存进行一次读/取为s个 记录,则整个批处理过程中读/写外存 的次数为2(m/s+(m+n)/s)
(其中s为对外存进行一次读/取的 记录数)。
24
10.4 索 引 文 件
一、结构特点:
1.索引文件由“主文件”和多级“索引”组成; 2.索引中的每个记录由“关键字”和“指针”组成; 3.通常,索引文件中的主文件是无序文件,索引是 (按关键字有序)的有序文件; 4.“索引”是在输入数据建立文件时自动生成。初 建时的“静态索引”为无序文件,经过排序后成为有序
12
五、文件的操作:
1.检索
顺序存取:存取“当前记录的” 下一个记录; 直接存取:存取第i个记录; 按关键字存取:存取其关键字 等于给定值的记录。
13
2.修改 往文件中插入一个或一批记录; 从文件中删除一个或一批记录; 更新文件中某个记录的属性。
14
3.排序 文件的操作方式可以实时处理或 批量处理。
2.操作的特点:
检索
插入
删除
39
检索:
可有两种方式:
顺序存取— 依关键字最小至大顺序 存取。
按关键字存取— 从主索引开始,到 柱面索引,到磁道索引,最后取 得记录,先后访问四次外存。
40
插入:
数据结构详解ppt课件

“数据结构知识导入全程目标•数据结构的基本概念–逻辑结构–物理结构–运算结构•数据结构的基本实现–堆栈–队列–链表–二叉树知识讲解数据结构的基本概念•数据结构是相互之间存在一种或多种特定关系的数据的集合•数据结构是计算机存储、组织数据的方式•数据结构的选择直接影响计算机程序的运行效率(时间复杂度)和存储效率(空间复杂度)•计算机程序设计=算法+数据结构•数据结构的三个层次–抽象层——逻辑结构–结构层——物理结构–实现层——运算结构识讲解•集合结构(集)–结构中的数据元素除了同属于一个集合外没有其它关系识讲解•线性结构(表)–结构中的数据元素具有一对一的前后关系识讲解•树型结构(树)–结构中的数据元素具有一对多的父子关系知识讲解实现双向线性链表•删除节点识讲解•树形结构的最简模型,每个节点最多有两个子节点•每个子节点有且仅有一个父节点,整棵树只有一个根节点•具有递归的结构特征,用递归的方法处理,可以简化算法•三种遍历序–前序遍历:D-L-R–中序遍历:L-D-R–后序遍历:L-R-D识讲解•二叉树的一般形式–根节点、枝节点和叶节点–父节点和子节点–左子节点和右子节点–左子树和右子树–大小和高度(深度)识讲解•满二叉树–每层节点数均达到最大值–所有枝节点均有左右子树知识讲解二叉树•完全二叉树–除最下层外,各层节点数均达到最大值–最下层的节点都连续集中在左边识讲解•顺序存储–从上到下、从左到右,依次存放–非完全二叉树需用虚节点补成完全二叉树识讲解•链式存储–二叉链表,每个节点包括三个域,一个数据域和两个分别指向其左右子节点的指针域识讲解•链式存储–三叉链表,每个节点包括四个域,一个数据域、两个分别指向其左右子节点的指针域和一个指向其父节点的指针域知识讲解实现有序二叉树•有序二叉树亦称二叉搜索树,若非空树则满足:–若左子树非空,则左子树上所有节点的值均小于等于根节点的值–若右子树非空,则右子树上所有节点的值均大于等于根节点的值–左右子树亦分别为有序二叉树•基于有序二叉树的排序和查找,可获得O(logN)级的平均时间复杂度知识讲解逻辑结构•网状结构(图)–结构中的数据元素具有多对多的交叉映射关系识讲解•顺序结构–结构中的数据元素存放在一段连续的地址空间中识讲解•顺序结构–随机访问方便,空间利用率低,插入删除不方便识讲解•链式结构–结构中的数据元素存放在彼此独立的地址空间中–每个独立的地址空间称为节点–节点除保存数据外,还需要保存相关节点的地址识讲解•链式结构–插入删除方便,空间利用率高,随机访问不方便知识讲解逻辑结构与物理结构的关系•每种逻辑结构采用何种物理结构实现,并没有一定之规,通常根据实现的难易程度,以及在时间和空间复杂度方面的要求,选择最适合的物理结构,亦不排除复合多种物理结构实现一种逻辑结构的可能知识讲解运算结构•创建与销毁–分配资源、建立结构、释放资源•插入与删除–增加、减少数据元素•获取与修改–遍历、迭代、随机访问•排序与查找–算法应用知识讲解数据结构的基本实现•堆栈–基于顺序表的实现–基于链式表的实现•队列–基于顺序表的实现–基于链式表的实现•链表–双向线性链表的实现•二叉树–有序二叉树(二叉搜索树)的实现知识讲解堆栈•后进(压入/push)先出(弹出/pop)识讲解•初始化空间、栈顶指针、判空判满识讲解•动态分配、栈顶指针、注意判空知识讲解队列•先进(压入/push)先出(弹出/pop)识讲解•初始化空间、前弹后压、循环使用、判空判满识讲解•动态分配、前后指针、注意判空知识讲解链表•地址不连续的节点序列,彼此通过指针相互连接•根据不同的结构特征,将链表分为:–单向线性链表–单向循环链表–双向线性链表–双线循环链表–数组链表–链表数组–二维链表识讲解•单向线性链表识讲解•单向循环链表识讲解•双向线性链表识讲解•双向循环链表识讲解•数组链表识讲解•链表数组识讲解•二维链表识讲解•结构模型识讲解•插入节点。
数据结构-基本概念与术语ppt课件

col = {<a1,a4>,<a2,a5>,<a3,a6>}
假设在 6 个数据元素{a1, a2, a3, a4, a5, a6} 之间存在如下的次序关系:
{<ai, ai+1>| i=1, 2, 3, 4, 5}
那么构成一维数组的定义。 可见,不同的“关系〞构成不同的“构造〞
数据构造是相互之间存在着某种逻辑关 系的数据元素的集合。
是如数:整据的数不“可5分〞割,字的最符小“单N位〞。等。 ----是不可分割的“原子〞
数据元素也可以由假设干款项构成。 例如: 描画一个学生的数据元素
其中每个款项称为一个“数据项〞
它是数据构造中讨论的最小单位
姓 名学 号班 号性别出生日期入学成果 年月日
原子项
称之为组合项
数据对象是性质一样的数据元素的集合, 是数据的一个子集。
例二 笼统数据类型三元组的定义:
ADT Triplet { 数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet } 数据关系:R1={<e1,e2> , <e2,e3>} 根本操作:
InitTriplet( &T, v1, v2, v3 ) 操作结果:构造三元组T,元素e1,e2和e3分别被赋以参数v1,v2和v3的值。
DestroyTriplet( &T ) 操作结果:三元组T被销毁。
Get( T, i, &e ) 初始条件:三元组T已存在,1≤i≤3。 操作结果:用e前往T的第i元的值。
Put( &T, i ,e ) 初始条件:三元组T已存在,1≤i≤3。 操作结果:改动T的第i元的值为e。
IsAscending( T ) 初始条件:三元组T已存在。 操作结果:假设T的三个元素按升序陈列
数据结构基础讲义ppt课件

三叉链存储
.
Date:May 30, 2020
4.8 二叉树的遍历
IT Education & Training
• 遍历是指按某条搜索路线遍访每个结点且不重复(又 称周游),遍历是树结构插入、删除、修改、查找和 排序运算的前提,是二叉树一切运算的基础和核心。
• 牢记一种约定,对每个结点的查看都是“先左后右”。
例子中的数学模型正是数据结构要讨论的问题。
.
Date:May 30, 2020
1.2 定义
IT Education & Training
•数据结构是一门讨论"描述现实世界实体的数学模型 及其上的操作在计算机中如何表示和实现"的学科。
a. 在解决问题时可能遇到的典型的逻辑结构(数据结构) b. 逻辑结构的存储映象(存储实现) c. 数据结构的相关操作及其实现。(算法)
•二叉树由一个根结点加上两棵分别称为左子树和右子 树的互不相交的树组成:
–每个结点最多只有两棵子树(不存在度大于2的结点) –左子树和右子树次序不能颠倒(有序树)
.
Date:May 30, 2020
4.6 树转化为二叉树
IT Education & Training
•左孩子右兄弟表示法可以将一颗多叉树转化为一颗二
• 数据结构和算法的关系:数据结构是专门研究 数据的存储问题,而对存储后的数据进行相应 的操作就是算法。
.
Date:May 30, 2020
1.5 算法效率的度量
IT Education & Training
• 我们通过大O表示法来表示算法的效率:时 间复杂度、空间复杂度。规则如下:
(1)只关注最高次项,常数项和次要项忽略; (2)时间复杂度是指最坏时间复杂度; (3)只有常数项记做1。
2024版《数据结构图》ppt课件

良好的数据结构可以带来更高的运 行或存储效率,是算法设计的基础, 对程序设计的成败起到关键作用。
常见数据结构类型介绍
线性数据结构
如数组、链表、栈、队 列等,数据元素之间存
在一对一的关系。
树形数据结构
如二叉树、多叉树、森 林等,数据元素之间存
在一对多的关系。
图形数据结构
由顶点和边组成,数据 元素之间存在多对多的
队列定义、特点及应用场景
队列的特点 只能在队尾进行插入操作,队头进行删除操作。
队列是一种双端开口的线性结构。
队列定义、特点及应用场景
应用场景 操作系统的任务调度。 缓冲区的实现,如打印机缓冲区。
队列定义、特点及应用场景
广度优先搜索(BFS)。
消息队列和事件驱动模型。
串定义、基本操作及实现方法
最短路径问题 求解图中两个顶点之间的最短路径,即路径上边 的权值之和最小。
3
算法介绍 Prim算法、Kruskal算法、Dijkstra算法、Floyd 算法等。
拓扑排序和关键路径问题探讨
拓扑排序
对有向无环图(DAG)进行排序, 使得对每一条有向边(u,v),均有
u在v之前。
关键路径问题
求解有向无环图中从源点到汇点 的最长路径,即关键路径,它决
遍历二叉树和线索二叉树
遍历二叉树
先序遍历、中序遍历和后序遍历。遍历算 法可以采用递归或非递归方式实现。
VS
线索二叉树
利用二叉链表中的空指针来存放其前驱结 点和后继结点的信息,使得在遍历二叉树 时可以利用这些线索得到前驱和后继结点, 从而方便地遍历二叉树。
树、森林与二叉树转换技巧
树转换为二叉树
加线、去线、层次调整。将树中的每个结点的所有孩子结点用线连接起来,再去掉与原结点相连的线,最后 将整棵树的层次进行调整,使得每个结点的左子树为其第一个孩子,右子树为其兄弟结点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题
构建数学模型
程序实现
算法+数据结构 = 程序设计
IT Education & Training
处
给
处编
理
出
问
问
题
题
的
的
策
数
略
学
理制
问出
题 用
的
计指
模
算令
型
. 机集
3
Date:June 11, 2020
1.1 讨论的范畴
IT Education & Training
• 例1 求小红C语言和数据结构两门语言的考试的平均成 绩成绩和总成绩。全省的呢? • 例2 酒店管理中的客房分配问题。 • 例3 煤气管道的铺设问题。 • 等等……
• 线性结构的基本特点是节点之间满足线性关系。数组、链表、栈、 队列都属于线性结构。他们的共同之处,是节点中有且只有一个 开始节点和终端节点。他们分别属于几种不同的抽象数据类型实 现,它们之间的区别,主要就是操作的不同。
• 线性表是零个或者多个数据元素的有限序列,数据元素之间是有 顺序的,数据元素个数是有限的,数据元素的类型必须相同
(a )
(b )
.
14
Date:June 11, 2020
2.3 编程实战
IT Education & Training
•经典双向链表
主要操作:初始化头结点、添加、删除、获取元素、遍历
头 指 针 (a )
头 指 针
a 0
a 1
(b )
…
a n - 1
.
15
Date:June 11, 2020
第1天 习题
IT Education & Training
• Q1. 创建两循环单向链表并将它们合为一各链表? • Q2. 头指针和头节点有什么区别?头结点和其他节点有什么区别?
.
16
Date:June 11, 2020
3.1 栈的特点
IT Education & Training
• 栈为一种可以实现“先进后出”的存储结构, 凡是对数据的处理具有“后进先出(LIFO)”的 特点,都可以用栈这种数据结构来操作。
1.3 逻辑和物理结构
IT Education & Training
逻辑结构
123 4
1
2
3
1 2
65
56
7
4
3
线性结构
树形结构
图形结构
物理结构
12345
1
3
52
4
顺序存储
链式存储
.
7
Date:June 11, 2020
1.4 相关概念
• 数学模型 • 集合和关系 • 数据和信息 • 数据元素 • 数据项 • 关键码 • 抽象数据类型
.
13
Date:June 11, 2020
2.1 编程实战
IT Education & Training
• 动态数组
数组到底应该有多大才合适,通常不得而知。所以希 望能够在运行时具有改变数组大小的能力。(基本操 作:创建、销毁、插入、删除、遍历打印)
• 单向链表
头 指 针
头 指 针
a 0
a 1
…a n - 1
通俗点讲,数据结构研究的是数据的存储和操作。
.
5
Date:June 11, 2020
1.3 三个方面
数据的逻辑结构 数据的存储结构
IT Education & Training
线性结构
线性表 栈 队列
非线性结构
树形结构 图形结构
顺序存储 链式存储
数据的运算:查找、排序、插入、删除、修改等
.
6
Date:June 11, 2020
执行次数函数
阶
非正式术语
12
O(1)
常数阶
2n+3
O(n)
线性阶
3n2+2n+1
O(n2)
平方阶
5log2n+20
O(logn)
对数阶
2n+3nlog2n+19 O(nlogn)
nlogn阶
6n3+2n2+3n+4 O(n3)
立方阶
2n
. O(2n)
指数阶
10
Date:June 11, 2020
1.6 时间复杂度举例
Date:June 11, 2020
IT Education & Training
数据结构
.
传智播客
--肖兴贵 1
Date:June 11, 2020
主要内容
• 1 概要 • 2 线性表 • 3 栈和队列 • 4 树和二叉树 • 5 查找和排序
.
IT Education & Training
2
Date:June 11, 2020
• 线性阶:O(n)
IT Education & Training
• 平方阶: O(n2)
.
11
Date:June 11, 2020
1.6 空间复杂度举例
• 空间复杂度:O(n)
IT Education & Training
.
12
Date:June 11, 2020
2.1 线性表概念
IT Education & Training
.
IT Education & Training
8
Date:June 11, 2020
1.5 算法的定义
IT Education & Training
• 算法是特定问题求解步骤的描述,在计算机中 表现为指令的有限序列,算法是独立存在的一 种解决问题的方法和思想。对于算法而言,语 言并不重要,重要的是思想。
• 数据结构和算法的关系:数据结构是专门研究 数据的存储问题,而对存储后的数据进行相应 的操作就是算法。
.
9
Date:June 11, 2020
1.5 算法效率的度量
IT Education & Training
• 我们通过大O表示法来表示算法的效率:时 间复杂度、空间复杂度。规则如下:
(1)只关注最高次项,常数项和次要项忽略; (2)时间复杂度是指最坏时间复杂度; (3)只有常数项记做1。
ห้องสมุดไป่ตู้
• 栈的链式存储
.
18
Date:June 11, 2020
3.4 队列的特点
IT Education & Training
• 队列为一种可以实现“先进先出”(FIFO)的存 储结构。
• 栈的特殊之处在于限制了这个线性表的插入和 删除的位置,它始终只在栈顶进行。
.
17
Date:June 11, 2020
3.2 编程实战
• 栈的顺序存储
利用一组地址连续的的存储单元依次存放 自栈底到栈顶的数据元素,同时附设指针 top只是栈顶元素在顺序表中的位置。
IT Education & Training
例子中的数学模型正是数据结构要讨论的问题。
.
4
Date:June 11, 2020
1.2 定义
IT Education & Training
•数据结构是一门讨论"描述现实世界实体的数学模型 及其上的操作在计算机中如何表示和实现"的学科。
a. 在解决问题时可能遇到的典型的逻辑结构(数据结构) b. 逻辑结构的存储映象(存储实现) c. 数据结构的相关操作及其实现。(算法)