二级公共基础-
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入队运算:往队列的队尾插入一个元素,队尾指针rear的变化 退队运算:从队列的排头删除一个元素,队头指针front的变化
30
1.4.2 队列及其基本运算
2.循环队列及其运算
队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环 状空间,供队列循环使用
入队运算 :队尾指针加1,并当rear=m+1时置rear=1 出队运算:队头指针加1,并当front=m+1时置front=1
B=(D,R)
16
1.2.1 什么是数据结构
5.数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形 式
常用的存储结构:
顺序 链式 索引
一种数据结构可根据需要采用不同的存储结构。 采用不同的存储结构,其数据处理的效率是不 同
17
1.2.2 数据结构的图形表示
数据结点:用方框表示
5
3281
6
2316
7
3667
8
9
10
(b)删除19后,长度变为7
V(1..10)
1
30
2
55
3
62
4
38
5
21
6
67
7
8
9
10
(c)删除36后,长度变为6
25
顺序表的插入和删除分析
插入算法的分析
假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位 置上插入元素的可能性均等,则平均移动元素的个数为:
有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件。
常见的线性结构有:线性表、栈与队列、线性 链表
非线性结构
如果一个数据结构不是线性结构 常见的非线性结构有:树、二叉树、图
19
1.3 线性表及其顺序存储结构
1.3.1 线性表的基本概念
线性表:由n(n≥0)个相同类型数据元素构成的有
叉树的存储结构、二叉树的遍历 查找技术: 顺序查找、二分法查找 排序技术:交换类排序法、 插入类排序法、选择类排序
法
2
1.1 算法
1.1.1 算法的基本概念
算法是解题方案的准确而完整的描述,它不等于程序,也 不等计算方法。
1.算法的基本特征
可行性(effectiveness) 确定性(definiteness) 有穷性(finiteness) 拥有足够的情报
HEAD
a1
a2
…
an-1
(b)一个非空的线性链表示意图
an
^
34
1.5.1 线性链表的基本概念
双向链表:每个结点设置两个指针
左指针:指向其前件结点 右指针:指向其后件结点
左指针 数据域 右指针 (a)结点结构
HEAD
^ a1
a2
…
(b)一个非空的双向链表示意图
an ^
35
1.5.2 线性链表的基本运算
29
1.4.2 队列及其基本运算
1.队列的定义
限定只能在表的一端进行插入和在另一端进行删除操作的线性表 队尾(rear):允许插入的一端 队头(front):允许删除的另一端 先进先出(FIFO)表或后进后出(LILO)线性表
退队
A
B
C
D
E
F
入队
队头front
队尾rear
基本操作
rear front
Q(1..8) 8 7 6 5 4 3 2 1
(a)空队列
rear front
Q(1..8) 8 7F 6E 5D 4C 3B 2A 1
(b)有6个元素的循环队列
front 5D 4C 3B 2A 1Y
(c)元素X、Y入队后的队列
front rear
提高数据处理的速度 尽量节省在数据处理过程中所占用的计算机存
储空间
12
1.2.1 什么是数据结构 1.数据结构研究的主要内容
数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算
2.研究数据结构目的
提高数据处理的速度 尽量节省在数据处理过程中所占用的计算机存
储空间
Eisn1 1ni 11pi(ni1)n 2
删除算法的分析
在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元 素的个数为:
分析结论
Edl1 ni n1 pi(ni)n21
顺序存储结构表示的线性表,在做插入或删除操作时,平均需要移动大 约一半的数据元素。当线性表的数据元素量较大,并且经常要对其做插
插入 删除 合并 分解 逆转 复制 排序 查找
36
1.5.2 线性链表的基本运算 1.在线性链表中查找指定元素
链表不是随机存取结构 从链表的头指针出发,顺着链域next逐个结点
往下搜索,直至搜索到第i个结点为止
2.线性链表的插入
37
1.5.2 线性链表的基本运算 3.线性链表的删除
L(a o i) c L(a o 1 ) c (i 1 )* k
23
1.3.3 顺序表的插入运算
V(1..10)
1
19
83
2
30
3
55
4
62
5
38
6
21
7
36
8
67
9
10
V(1..10)
1
19
2
83
3
30
4
55
5
62
6
38
12
7
21
8
36
9
67
10
V(1..10)
1
19
2
83
3
30
4
55
5
62
Q(1..8) 8X 7F 6E 5D 4C 3B 2 1Y
(d)元素A出队后的队列
31
1.5 线性链表
1.5.1 线性链表的基本概念 1.线性表顺序存储的缺点
插入或删除的运算效率很低。在顺序存储的线 性表中,插入或删除数据元素时需要移动大量 的数据元素。
线性表的顺序存储结构下,线性表的存储空间 不便于扩充。
列举法 归纳法 递推 递归 减半递推技术 回溯法
5
1.1.2 算法复杂度 算法复杂度:时间复杂度、空间复杂度 1.算法的时间复杂度
执行算法所需要的计算工作量 与下列因素有关:
书写算法的程序设计语言 编译产生的机器语言,代码质量 机器执行指令的速度 问题的规模
6
1.1.2 算法复杂度
问题的规模函数
算法的工作量=f(n)
算法中基本操作重复执行的频率T(n),是问题规 模n的某个函数f(n),记作:
T(n)=O(f(n)) 记号“O”读作“大O”。表示随问题规模n的增加,算法
执行时间的增长率和f(n)相应增加。
常见算法复杂度:
O(1):常数阶 O(n):作线性阶 O(n2):平方阶 O(n3):立方阶 O(logn):对数阶 O(2n):指数阶
2.算法的基本要素
算法中对数据的运算和操作
算术运算:包括加、减、乘、除等) 逻辑运算:包括“与”、“或”、“非”等运算) 关系运算:包括“大于”、“小于”、“等于”、“不等于”等) 数据传输:包括赋值、输入、输出等操作
算法的控制结构
4
1.1.1 算法的基本概念 3.算法设计的基本方法
V(1..10) 10
9 8 7 6F 5E 4D 3C 2B 1A
(b)有6个元素的栈
top bottom
V(1..10) 10
9 8Y 7X 6F 5E 4D 3C 2B 1A
top bottom
V(1..10) 10
9 8 7X 6F 5E 4D 3C 2B 1A
(c)插入X和Y后的栈
(d)退出Y元素后的栈
6
38
7
12
8
3261
9
6376
10
67
(a)长度为8的线性表
(b)插入83后,长度变为9 (c)插入12后,长度变为10
24
1.3.4 顺序表的删除运算
V(1..10)
1
19
2
30
3
55
4
62
5
38
6
21
7
36
8
67
9
10
(a)长度为8的线性表
V(1..10)
1
30
2
3505
3
5652
4
6328
根结点、终端结点
前后件关系:用有向线段表示
春
夏
秋
冬
父亲
儿子
女儿
基本运算:
(a)一年四季数据结构
(b)家庭关系数据结构
插入运算
删除运算
查找、分类、合并、分解、复制、修改、……
18
1.2.3 线性结构与非线性结构
空的数据结构:一个数据元素都没有 线性结构
如果一个非空数据结构满足下列两个条件:
算法空间复杂度可定义为:
S(n)=O(f(n)) 原地工作(in place)的算法:记作O(1)
压缩存储技术
10
1.2 数据结构的基本概念
1.2.1 什么是数据结构 1.数据结构研究的主要内容
数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算
2.研究数据结构目的
限序列:
(a1,a2, ,ai, an)
n定义为线性表的表长;n=0 时的线性表被称为空 表。称i为在线性表中的位序。
例如:
英文大写字母表
(A,B,C,D,E,F,…X,Y,Z)
同一花色的13张扑克牌
(2,3,4,5,6,7,8,9,10,J,Q,K,A)
21
1.3.1 线性表的基本概念
入或删除操作时,这一点需要值得考虑
26
1.4 栈和队列
1.4.1 栈及其基本运算
1.栈的定义
栈(stack):一种只允许在表的一端进行插入或删除 操作的特殊的线性表
栈顶(top) :允许进行插入与删除操作的一端 栈底(bottom):不允许插入与删除操作的另一端 先进后出(FILO)或后进先出(LIFO)的线性表
22
1.3.2 线性表的顺序存储结构
两个基本特点:
线性表中所有元素所占的存储空间是连续的。 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
存储示意图
逻辑地址 数据元素 …
1
a1
2
a2
…
i
ai
…
n
an
…
物理地址 Loc(a1) Loc(a1)+k
Loc(a1)+(i-1)k
Loc(a1)+(n-1)k
入栈
出栈
栈顶 top
an
…
a2
栈底 bottom
a1
28
1.4.1 栈及其基本运算
2.栈的顺序存储及其运算
top=0:栈空
top=m:栈满
栈的基本运算
入栈运算
退栈运算
读栈顶元素
bottom top
V(1..10) 10
9 8 7 6 5 4 3 2 1
(a)空栈
top bottom
线性表的顺序存储结构不便于对存储空间的动 态分配。
33
1.5.1 线性链表的基本概念
2.线性链表
线性表的链式存储结构
物理存储单元上非连续、非顺序的存储结构, 数据元素的逻辑顺序是通过链表中的指针链接 来实现的
每个结点由两部分组成:数据域和指针域
数据域
指针域
data
next
(a)结点结构
线性表的结构特征
数据元素在表中的位置由序号决定,数据元素 之间的相对位置是线性的;
对于一个非空线性表,有且只有一个根结点a1, 它无前件,有且只有一个终端结点an,它无后 件,除根结点与终端结点外,其他所有结点有 且只有一个前件,也有且只有一个后件。
线性表的存储结构
顺序存储 链式存储
二级公共基础知识 第一章 数据结构基础
内容提要
算法:算法的基本概念、算法复杂度 数据结构的基本概念:什么是数据结构、 数据结构的图
形表示、 线性结构与非线性结构 线性表及其顺序存储结构:线性表的基本概念、 顺序存
储结构、插入运算、删除运算 栈和队列:栈及其基本运算、队列及其基本运算 线性链表:基本概念、基本运算、循环链表及其基本运算 树与二叉树:树的基本概念、二叉树及其基本性质、 二
7
1.1.2 算法复杂度
n×n矩阵相乘算法:
时间复杂度为O(n3)。
8
1.1.2 算法复杂度 分析算法的工作量两种方法:
平均性态 最坏情况复杂性
9
1.1.2 算法复杂度
2.算法的空间复杂度
算法执行过程中所需的最大存储空间 存储量包括以下三部分
算法程序所占的空间 输入的初始数据所占的存储空间 算法执行过程中所要的额外空间
13
1.2.1 什么是数据结构
线性表
A.线性结构 栈
队 1.数据的逻辑结构
数 据 结
树形结构 B.非线性结构
构
图形结构
的
三 个
2、数据的存储结构 A 顺序存储
方 面
B 链式存储
3、数据的运算:检索、排序、插入、删除、修改等。
14
1.2.1 什么是数据结构 3.数据结构的定义
相互有关联的数据元素的集合 数据元素之间的关系可以用前后件关系来描述 一个数据结构应包含以下两方面信息:
表示数据元素的信息 表示各数据元素之间的前后件关系
15
1.2.1 什么是数据结构
4.数据的逻辑结构
对数据元素之间的逻辑关系的描述 只抽象地反映数据元素之间的逻辑关系,与计
算机中的存储无关 两个要素:
数据元素的集合,通常记为D; 前后件关系,通常记为R
一个数据结构B可以表示为:
30
1.4.2 队列及其基本运算
2.循环队列及其运算
队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环 状空间,供队列循环使用
入队运算 :队尾指针加1,并当rear=m+1时置rear=1 出队运算:队头指针加1,并当front=m+1时置front=1
B=(D,R)
16
1.2.1 什么是数据结构
5.数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形 式
常用的存储结构:
顺序 链式 索引
一种数据结构可根据需要采用不同的存储结构。 采用不同的存储结构,其数据处理的效率是不 同
17
1.2.2 数据结构的图形表示
数据结点:用方框表示
5
3281
6
2316
7
3667
8
9
10
(b)删除19后,长度变为7
V(1..10)
1
30
2
55
3
62
4
38
5
21
6
67
7
8
9
10
(c)删除36后,长度变为6
25
顺序表的插入和删除分析
插入算法的分析
假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位 置上插入元素的可能性均等,则平均移动元素的个数为:
有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件。
常见的线性结构有:线性表、栈与队列、线性 链表
非线性结构
如果一个数据结构不是线性结构 常见的非线性结构有:树、二叉树、图
19
1.3 线性表及其顺序存储结构
1.3.1 线性表的基本概念
线性表:由n(n≥0)个相同类型数据元素构成的有
叉树的存储结构、二叉树的遍历 查找技术: 顺序查找、二分法查找 排序技术:交换类排序法、 插入类排序法、选择类排序
法
2
1.1 算法
1.1.1 算法的基本概念
算法是解题方案的准确而完整的描述,它不等于程序,也 不等计算方法。
1.算法的基本特征
可行性(effectiveness) 确定性(definiteness) 有穷性(finiteness) 拥有足够的情报
HEAD
a1
a2
…
an-1
(b)一个非空的线性链表示意图
an
^
34
1.5.1 线性链表的基本概念
双向链表:每个结点设置两个指针
左指针:指向其前件结点 右指针:指向其后件结点
左指针 数据域 右指针 (a)结点结构
HEAD
^ a1
a2
…
(b)一个非空的双向链表示意图
an ^
35
1.5.2 线性链表的基本运算
29
1.4.2 队列及其基本运算
1.队列的定义
限定只能在表的一端进行插入和在另一端进行删除操作的线性表 队尾(rear):允许插入的一端 队头(front):允许删除的另一端 先进先出(FIFO)表或后进后出(LILO)线性表
退队
A
B
C
D
E
F
入队
队头front
队尾rear
基本操作
rear front
Q(1..8) 8 7 6 5 4 3 2 1
(a)空队列
rear front
Q(1..8) 8 7F 6E 5D 4C 3B 2A 1
(b)有6个元素的循环队列
front 5D 4C 3B 2A 1Y
(c)元素X、Y入队后的队列
front rear
提高数据处理的速度 尽量节省在数据处理过程中所占用的计算机存
储空间
12
1.2.1 什么是数据结构 1.数据结构研究的主要内容
数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算
2.研究数据结构目的
提高数据处理的速度 尽量节省在数据处理过程中所占用的计算机存
储空间
Eisn1 1ni 11pi(ni1)n 2
删除算法的分析
在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元 素的个数为:
分析结论
Edl1 ni n1 pi(ni)n21
顺序存储结构表示的线性表,在做插入或删除操作时,平均需要移动大 约一半的数据元素。当线性表的数据元素量较大,并且经常要对其做插
插入 删除 合并 分解 逆转 复制 排序 查找
36
1.5.2 线性链表的基本运算 1.在线性链表中查找指定元素
链表不是随机存取结构 从链表的头指针出发,顺着链域next逐个结点
往下搜索,直至搜索到第i个结点为止
2.线性链表的插入
37
1.5.2 线性链表的基本运算 3.线性链表的删除
L(a o i) c L(a o 1 ) c (i 1 )* k
23
1.3.3 顺序表的插入运算
V(1..10)
1
19
83
2
30
3
55
4
62
5
38
6
21
7
36
8
67
9
10
V(1..10)
1
19
2
83
3
30
4
55
5
62
6
38
12
7
21
8
36
9
67
10
V(1..10)
1
19
2
83
3
30
4
55
5
62
Q(1..8) 8X 7F 6E 5D 4C 3B 2 1Y
(d)元素A出队后的队列
31
1.5 线性链表
1.5.1 线性链表的基本概念 1.线性表顺序存储的缺点
插入或删除的运算效率很低。在顺序存储的线 性表中,插入或删除数据元素时需要移动大量 的数据元素。
线性表的顺序存储结构下,线性表的存储空间 不便于扩充。
列举法 归纳法 递推 递归 减半递推技术 回溯法
5
1.1.2 算法复杂度 算法复杂度:时间复杂度、空间复杂度 1.算法的时间复杂度
执行算法所需要的计算工作量 与下列因素有关:
书写算法的程序设计语言 编译产生的机器语言,代码质量 机器执行指令的速度 问题的规模
6
1.1.2 算法复杂度
问题的规模函数
算法的工作量=f(n)
算法中基本操作重复执行的频率T(n),是问题规 模n的某个函数f(n),记作:
T(n)=O(f(n)) 记号“O”读作“大O”。表示随问题规模n的增加,算法
执行时间的增长率和f(n)相应增加。
常见算法复杂度:
O(1):常数阶 O(n):作线性阶 O(n2):平方阶 O(n3):立方阶 O(logn):对数阶 O(2n):指数阶
2.算法的基本要素
算法中对数据的运算和操作
算术运算:包括加、减、乘、除等) 逻辑运算:包括“与”、“或”、“非”等运算) 关系运算:包括“大于”、“小于”、“等于”、“不等于”等) 数据传输:包括赋值、输入、输出等操作
算法的控制结构
4
1.1.1 算法的基本概念 3.算法设计的基本方法
V(1..10) 10
9 8 7 6F 5E 4D 3C 2B 1A
(b)有6个元素的栈
top bottom
V(1..10) 10
9 8Y 7X 6F 5E 4D 3C 2B 1A
top bottom
V(1..10) 10
9 8 7X 6F 5E 4D 3C 2B 1A
(c)插入X和Y后的栈
(d)退出Y元素后的栈
6
38
7
12
8
3261
9
6376
10
67
(a)长度为8的线性表
(b)插入83后,长度变为9 (c)插入12后,长度变为10
24
1.3.4 顺序表的删除运算
V(1..10)
1
19
2
30
3
55
4
62
5
38
6
21
7
36
8
67
9
10
(a)长度为8的线性表
V(1..10)
1
30
2
3505
3
5652
4
6328
根结点、终端结点
前后件关系:用有向线段表示
春
夏
秋
冬
父亲
儿子
女儿
基本运算:
(a)一年四季数据结构
(b)家庭关系数据结构
插入运算
删除运算
查找、分类、合并、分解、复制、修改、……
18
1.2.3 线性结构与非线性结构
空的数据结构:一个数据元素都没有 线性结构
如果一个非空数据结构满足下列两个条件:
算法空间复杂度可定义为:
S(n)=O(f(n)) 原地工作(in place)的算法:记作O(1)
压缩存储技术
10
1.2 数据结构的基本概念
1.2.1 什么是数据结构 1.数据结构研究的主要内容
数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算
2.研究数据结构目的
限序列:
(a1,a2, ,ai, an)
n定义为线性表的表长;n=0 时的线性表被称为空 表。称i为在线性表中的位序。
例如:
英文大写字母表
(A,B,C,D,E,F,…X,Y,Z)
同一花色的13张扑克牌
(2,3,4,5,6,7,8,9,10,J,Q,K,A)
21
1.3.1 线性表的基本概念
入或删除操作时,这一点需要值得考虑
26
1.4 栈和队列
1.4.1 栈及其基本运算
1.栈的定义
栈(stack):一种只允许在表的一端进行插入或删除 操作的特殊的线性表
栈顶(top) :允许进行插入与删除操作的一端 栈底(bottom):不允许插入与删除操作的另一端 先进后出(FILO)或后进先出(LIFO)的线性表
22
1.3.2 线性表的顺序存储结构
两个基本特点:
线性表中所有元素所占的存储空间是连续的。 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
存储示意图
逻辑地址 数据元素 …
1
a1
2
a2
…
i
ai
…
n
an
…
物理地址 Loc(a1) Loc(a1)+k
Loc(a1)+(i-1)k
Loc(a1)+(n-1)k
入栈
出栈
栈顶 top
an
…
a2
栈底 bottom
a1
28
1.4.1 栈及其基本运算
2.栈的顺序存储及其运算
top=0:栈空
top=m:栈满
栈的基本运算
入栈运算
退栈运算
读栈顶元素
bottom top
V(1..10) 10
9 8 7 6 5 4 3 2 1
(a)空栈
top bottom
线性表的顺序存储结构不便于对存储空间的动 态分配。
33
1.5.1 线性链表的基本概念
2.线性链表
线性表的链式存储结构
物理存储单元上非连续、非顺序的存储结构, 数据元素的逻辑顺序是通过链表中的指针链接 来实现的
每个结点由两部分组成:数据域和指针域
数据域
指针域
data
next
(a)结点结构
线性表的结构特征
数据元素在表中的位置由序号决定,数据元素 之间的相对位置是线性的;
对于一个非空线性表,有且只有一个根结点a1, 它无前件,有且只有一个终端结点an,它无后 件,除根结点与终端结点外,其他所有结点有 且只有一个前件,也有且只有一个后件。
线性表的存储结构
顺序存储 链式存储
二级公共基础知识 第一章 数据结构基础
内容提要
算法:算法的基本概念、算法复杂度 数据结构的基本概念:什么是数据结构、 数据结构的图
形表示、 线性结构与非线性结构 线性表及其顺序存储结构:线性表的基本概念、 顺序存
储结构、插入运算、删除运算 栈和队列:栈及其基本运算、队列及其基本运算 线性链表:基本概念、基本运算、循环链表及其基本运算 树与二叉树:树的基本概念、二叉树及其基本性质、 二
7
1.1.2 算法复杂度
n×n矩阵相乘算法:
时间复杂度为O(n3)。
8
1.1.2 算法复杂度 分析算法的工作量两种方法:
平均性态 最坏情况复杂性
9
1.1.2 算法复杂度
2.算法的空间复杂度
算法执行过程中所需的最大存储空间 存储量包括以下三部分
算法程序所占的空间 输入的初始数据所占的存储空间 算法执行过程中所要的额外空间
13
1.2.1 什么是数据结构
线性表
A.线性结构 栈
队 1.数据的逻辑结构
数 据 结
树形结构 B.非线性结构
构
图形结构
的
三 个
2、数据的存储结构 A 顺序存储
方 面
B 链式存储
3、数据的运算:检索、排序、插入、删除、修改等。
14
1.2.1 什么是数据结构 3.数据结构的定义
相互有关联的数据元素的集合 数据元素之间的关系可以用前后件关系来描述 一个数据结构应包含以下两方面信息:
表示数据元素的信息 表示各数据元素之间的前后件关系
15
1.2.1 什么是数据结构
4.数据的逻辑结构
对数据元素之间的逻辑关系的描述 只抽象地反映数据元素之间的逻辑关系,与计
算机中的存储无关 两个要素:
数据元素的集合,通常记为D; 前后件关系,通常记为R
一个数据结构B可以表示为: