数据结构基础讲义PPT课件
合集下载
数据结构基础讲义共47页

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

求解函数perm:
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)一位程序员,数据抽象也可减少其在某一 具体时间需要考虑的范围。
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)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种 。
在网络传输或文件读写过程中,使 用队列作为缓冲区,暂时存储待处 理的数据,以提高处理效率。
04
串、数组和广义表
串定义及基本操作
串的基本操作包括
赋值操作、连接操作、求串长、比较操作、定位操作等。
串的存储结构包括
顺序存储结构和链式存储结构。
串模式匹配算法
串模式匹配算法是指在一个主串中寻找一个子串(模式串)的位置。
函数调用
在程序执行过程中,使用 栈来保存函数调用的信息, 如函数参数、局部变量和 返回地址等。
队列定义及基本操作
01
队列(Queue)是一种特殊的线性数据结构,其操作在表 的两端进行。一端称为队头(front),另一端称为队尾 (rear)。
02
队列的基本操作包括
03
入队(enqueue):在队尾插入一个元素。
3
线性表的抽象数据类型描述
数据类型名称、数据对象集合、操作集合等
线性表顺序存储结构
01
顺序存储结构的定义
用一段地址连续的存储单元依次存储线性表的数据元素
02
顺序存储结构的基本操作实现
创建、初始化、销毁、判空、清空、求长度、获取元素、修改元素等操
作的实现方法
03
顺序存储结构的优缺点
无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速
线索二叉树
线索二叉树是对二叉树的每个结点增设两个标志位以及一条线索而得到的。根据线索性质的不同,线索二叉树可分为前序线 索二叉树、中序线索二叉树和后序线索二叉树三种。这里以中序线索二叉树为例来说明线索二叉树的构造方法。
中序线索二叉树的构造规则是:若将二叉树的中序遍历序列中的每个结点都看作是相应指针域为空的指针,则称这些指针为 线索,而指向其前驱或后继的指针称为线索指针。加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树 (Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 讨论的范畴
问题
构建数学模型
程序实现
算法+数据结构 = 程序设计
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. 数据结构的相关操作及其实现。(算法)
问题
构建数学模型
程序实现
算法+数据结构 = 程序设计
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. 数据结构的相关操作及其实现。(算法)