自考数据结构导论复习资料docx.docx
- 文档编号:24386141
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:31
- 大小:454.67KB
自考数据结构导论复习资料docx.docx
《自考数据结构导论复习资料docx.docx》由会员分享,可在线阅读,更多相关《自考数据结构导论复习资料docx.docx(31页珍藏版)》请在冰豆网上搜索。
自考数据结构导论复习资料docx
数据结构导论复习
第一章概论
1.数据:
凡能被计算机存储、加工处理的对象。
2.数据元素:
是数据的基本单位,在程序中作为一个整体而加以考虑和处理
3.数据项:
又叫字段或域,它是数据的不可分割的最小标识单位。
4.逻辑结构需要注意的几点:
1逻辑结构与数据元素本身的内容无关
2逻辑结构与数据元素相对位置无关
3逻辑结构与所有结点的个数无关
5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。
6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点?
答:
集合中任何两个结点之间都没有逻辑关系,组织形式松散;
线性结构中结点按逻辑关系依次排列形成一条“锁链”;
树形结构具有分支、层次特性,其形态有点像自然界中的树;
图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。
7.运算是在逻辑结构层次上对处理功能的抽象
8.基本运算的含义?
答:
假如「是S上的一些运算的集合,△是「的一个子集,使得「中每一运算都可以“归约”为△中的一个或多个运算,而△中任一运算不可归约为别的运算,则称△中运算为基本运算
9.数据结构是指山一个逻辑结构S和S上的一个基本运算集△构成的整体(S,A)„
10.数据结构涉及数据表示和数据处理两个方面
11.存储结构的含义和四种基本存储方式的基本思想?
答:
存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。
一个存储结构应包含三个主要的部分:
存储结点、机内表示和附加设施。
存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。
12.运算实现与运算的联系与区别?
答:
运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。
13.算法的概念和分类?
答:
算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械地求解。
算法的类型有:
运行终止的程序可执行部分、伪语言算法和非形式算法(根据描述算法语言不同)
14.算法在给定输入下的计算量的含义和估算的方法?
答:
算法在给定输入下的计算量是指根据该类问题的特点合理地选择一种或几种操作作为“标准操作”,确定每个算法在给定输入下共执行多少次标准操作,并将此次数规定为该算法在给定输入下的计算量。
估算的方法有:
最坏时间复杂度和平均时间复杂度。
15.最坏情况时间复杂性和平均时间复杂性的概念?
答:
最坏情况时间复杂性也称为最坏时间复杂度,是指以算法在所有输入下的计算量的最大值作为算法的计算量;平均情况时间复杂性也称为平均时间复杂度,是指以算法在所有输入下的计算量的加权平均值作为算法的计算量;
16.空间复杂性指的是一个算法除输入数据占存储空间之外所需要的附加存储空间的大小。
17.算法的性质:
正确性、易读性、健壮性和高效率。
第二章线性表
1.线性结构:
是n(nNO)个结点的有穷序列。
2.线性结构的基本特征:
若至少含有一个结点,则除起始结点没有直接前趋外,其他结点有且仅有一个直接前趋;除终端节点没有直接后继外,其他结点有且仅有一个直接后继。
3.线性表的逻辑结构是线性结构
4.线性表的六种基本运算的功能?
答:
(1)初始化INITIATE(L),功能是建立一个空表
⑵求表长LENGTH(L),功能是返回线性表L的长度
⑶读表元GET(L,i),功能是返回线性表L的第i个结点
⑷定位(按值查找)LOCATE(L,X),功能是返回找到的结点集合中序号的最小值,否则返回值为0(说明没有找到)
⑸插入INSERT(L,X,i),功能是在线性表L的地i个位置上增加一个值为X的新结点(整个表长+1)
⑹删除DELETER,i),功能是撤销线性表L的第i个位置结点(整个表长-1)
5.顺序表表示法的基本思想、特点
答:
基本思想是:
按照顺序存储方式,顺序表的一个存储结点存储线性表的一个结点的内容,即数据元素,所有存储结点按相应数据元素建的逻辑关系决定的次序依次排列。
特点:
逻辑结构中相邻的结点在存储结构中仍相邻。
6.区别顺序表的容量与线性表的表长?
答:
顺序表的容量是指定义顺序表时的maxsize的值,而线性表的表长是指其中包含的结点个数。
7.顺序表中ai的地址计算:
ai的地址=b+(i-1)*1,b是首地址,1是每个结点占的空间
7.掌握顺序表上实现插入、删除和定位运算的三个算法P18-20
8.单链表表示法的基本思想一用指针表示结点间逻辑关系
9.单链表的结点形式:
答:
由数据域和指针域两部分组成;这两部分各自的作用分别是数据域是用于存储线性表的一个数据元素的,指针域是用于存放一个指针的,该指针指向本结点所含数据元素的直接后继所在的结点。
10.头指针和头结点的作用?
答:
头指针是一个指向链表开始结点的指针,单链表山头指针唯一确定;头结点是我们人为地在链表的开始结点之前附加的一个结点,有了头结点之后,头指针指向头结点,不论链表是否为空,头指针总是非空的,而且头指针的设置使得对链表的第一位置上的操作和在其他位置上的操作一致。
11.单链表上实现插入、删除和定位三种运算的三个算法:
P26-28
12.插入算法中所包含的指针操作:
s=malloc(size);s—data=x;s—next=p—next;p—next=s;删除算法中所包含的指针操作:
q=p—next;p—next=q—next;free(q);
13.Malloc(size)的作用:
1生成一个结点
2形式一条指针
14.循环链表的组织方法:
将单链表中的尾结点的NULL改成指向头结点的指针,就形成了循环链表。
循环链表优点:
可以从表中任一结点出发都可以向后扫描整表。
刻画双链表结构的对称性的语句:
p—prior—next=p—next—prior;
16.顺序表的主要优点和主要缺点:
优点:
①无需为表示结点间的逻辑关系而增加额外的存储空间
2可以方便地随机存取表中的任意结点
缺点:
①插入和删除运算不方便
2分配内存空间采用静态分配方式
17.链表的主要优点:
1插入和删除运算方便,只需要修改指针,不需要移动结点
2分配内存空间采用动态分配方式
18.字符串:
以字符为数据元素,以线性结构为逻辑结构的数据。
19.串的逻辑结构(是线性结构)和串的特点(是由。
个或多个字符组成的有穷序列)
20.串的基本运算的功能:
判等EQUAL(S,T)的功能是两个串的长度要相等,而且对应位置的字符都要相同。
21.串的顺序存储方法(紧缩格式和非紧缩格式)和链接存储方法
第三章栈、队列和数组
1.栈的基本运算及山此而决定的栈的基本特点
栈是一种只允许在栈顶进行插入、删除的特殊线性表;其基本特点是采用“后进先出”操作;
2.栈的基本运算:
①初始化InitStack(S)②进栈Push(S,X)③退栈Pop(S)
4读栈顶元素TOP(S)⑤判断栈空Empty(S)
3.顺序栈“上溢”、“下溢”的概念
“上溢”:
顺序栈在进行进栈时,超过了顺序栈的最大的容量
“下溢”:
顺序栈在进行退栈时,栈中的元素少于0个元素
4.进栈和退栈运算在顺序栈上的实现算法:
P44
5.顺序栈上的简单算法(初始化,判栈空,取栈顶元素)
6.链栈的结点形式及其描述:
Data
Next
Data用来存放该结点的数据元素
Next用来存放指向下一个数据元素
7.链栈上实现进栈和退栈的算法P46
8.链栈上的简单算法(初始化,判栈空,取栈顶元素)
9.队列的基本运算及山此决定的队列的特点
队列是一种只允许在对头进行插入在队尾进行删除的特殊线性表;其基本特点是采用“先进先出”操作;
10.顺序队上的“假溢出”及其解决方法:
顺序队在进行多次入队、出队后,顺序队已经满了,但顺序队中的大部分空间是空的;
解决方法:
将顺序队改成循环队
11.循环队队满、队空的条件:
判断循环栈满的条件:
((sq—rear+1)%maxsize)==sq—front判断循环栈空的条件:
sq—rear==sq—front
12.链队的结点形式及其链队的组织方法:
13.在链队上实现入队、出队的算法P56-57
14.数组的逻辑结构是线性结构的推广
15.二维数组的基本运算是读与写
16.二维数组:
4/][j]=40][0]+[(n+!
)*/+;]*表,其中a[0][0]是
首地址,k是每个数据元素存储单元。
17.稀疏矩阵的三元组表示法:
A=(i,j,aij)
■0
3
0
0
0
1
0
0
0
0
0
0
A=
5
-1
0
0
0
0
0
0
0
0
4
0
-3
0
0
0
0
0
A=((l,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3))
第四章树
1.树的定义:
是n(n>0)个结点的有穷集合,满足:
1有且仅有一个称为根的结点
2其余结点分为m(mNO)个互不相交的非空集合Tl,T2……Tm,这些集合中的每一个都是一棵树,称为根的子树。
2.树形结构的有关术语及其含义
1根结点
2双杀结点和孩子结点
3兄弟结点和堂兄弟结点
4子孙结点和祖先结点
5树的层次、树的高度和树的度
3.二叉树的逻辑结构、特点和五种基本形态
(1):
二叉树是n(nNO)个结点的有穷集合,满足:
1有且仅有一个称为根的结点
2其余结点分为2个互不相交的集合Tl,T2,T1是左了树,T2是右了树,且Tl,T2也都是一棵二叉树。
(2)特点:
①二叉树是棵有序树
②二叉树的度W2
(3)五种基本形态
4.二叉树的基本运算和性质
(1)二叉树的基本运算:
1初始化INITIATE(BT)
2求根ROOT(BT)
3求双亲PARENT(BT,X)
4求左孩子LCHILD(BT,X)求右孩子RCHILD(BT,X)
5建树CREATE(X,LBT,RBT)
6剪枝DELLEFT(BT,X)和DELRIGHT(BT,X)
(2)二叉树的性质:
③n0=n2+l
④具有n个结点,深度K=Llog':
」+l
是针对完全二叉树
5按照从上到下,从左到右的顺序编号,
2i2i+l
5.二叉链表的结点形式及其描述,二叉链表中各结点的联系方法及根指针的作用
(1)二叉链表的结点形式
data是存放该结点的数据元素,Ichild是存放指向该结点的左孩子的指针,rchild是存放指向该结点的右孩子的指针。
(2)根指针的作用,是用来指明根结点。
6.满二叉树和完全二叉树的概念
(1)满二叉树是深度为K的二叉树的总共结点数为2爪-1
(2)完全二叉树是在满二叉树上少0个或者从最下层的最右边开始少起的二叉树
7.设计二叉树上基于二种遍历的简单算法
8.判定树和哈夫曼树的概念
(1)判断树是用来描述分类过程的二叉树
(2)哈夫曼树是构造带权路径长度最小的二叉树
9.哈夫曼树的特性:
1m个权值构造的哈夫曼树的结点总数为2m-l
2m个权值构造的哈夫曼树后权值都处在叶子结点上
3在哈夫曼树中,权值越大离根越近
4在哈夫曼树中,没有度为1的结点
10.将树转化成二叉树时,得到的二叉树的右子树永远为空
11.在n个结点的二叉链表中,总共有2n个指针,其中,非空指针数为n-1,空指针数为n+1
12.二叉链表的好处是方便每个结点找其双亲结点
13.讨论树、森林和二叉树的关系目的是想借助二叉树上的运算方法来实现对树的一些运算
14.
要将先序、中序和后序遍历序列中的两种还原成唯一二夕出时”'须要有中序序列
15.
附录:
树这章可以出的应用题
1.二叉树A二叉链表图
root
2.二叉链表图二叉树
(是上题中的逆操作)
A
B
C
D
A
E
F
A
A
A
A
G
H
12345678910111213
4.顺序存储结构图►二叉树
(是上题中的逆操作)
5.二叉树
>写出先序、中序和后序遍历
DiE:
先序
中序
后序
(DLR)
(LDR)
(LRD)
;G;
6.先序和中序或者先序和后序序列
:
ABDEGCF
:
DBGEACF
:
DGEBFCA
A二叉树
(1)先序序列:
ABCDEFGHU中序序列:
CDBFEAIHGJ
中序CDBFEAIHGJ
先序ABCDEFGHIJ
(2)后序序列:
DECBHGFA中序序列:
BDCEAGFH
BDCEAGFH
DECBHGFA
>孩子链表表示法
7.树
8.树孩子兄弟链表表示法
9.树
*双亲表示法
A
-1
B
0
C
0
D
0
E
1
F
1
G
2
H
3
I
3
J
3
0
1
2
3
4
5
6
7
8
9
10.树
A二叉树
(b)
二叉树
12.二叉树
*森林
(a)
13.哈夫曼树的构造
.26
'32.
J、
■18
/V
0»
3)(5)
给定权值给7,18,3,32,5,26,12,8,构造哈夫曼树并计算其带权路径长度
带权路径长度=
3x4+5x4+7x4+8x4+12x3+18x3+26x2+32x2
=298
第五章图
1.图状结构的定义并熟悉有关术语
(1)图的定义:
图由两个集合构成,记作G=(V,E),其中V是顶点的有穷非空集合,E是边的集合,并且边是顶点集合的无序对或有序对集合。
(2)图的术语:
1无向图:
顶点点偶对是无序的记作:
(vi,vj)
有向图:
顶点点偶对是有序的记作:
2无向完全图:
任何两个顶点都有边关联的无向图(n个顶点无向完全图总有边—1))
2
有向完全图:
任何两个顶点都有弧关联的有向图(n个顶点有向完全图总有边n(n-1))
3无向图顶点的度:
与该顶点关联的边的数目;
有向图顶点的度=入度+出度
(入度:
以该顶点为终点的边数;出度:
以该顶点为始点的边数;)
4权:
图中边上附带的值;
5路径:
是从一个顶点到另一个顶点的序列;
简单路径:
序列中顶点不重复的路径;
环/回路:
第一个顶点和最后一个顶点相同的路径;
简单环/回路:
除了第一个顶点和最后一个顶点相同外,其余顶点均不重复的回路;
6子图:
设图G=(V,E),若E'GE,V'旬,且E'中的边关联的顶点都在V'中,则称G‘=(V,,E,)是G的子图;
7连通图:
在无向图中,任何两个顶点都存在Vi到Vj的路径
强连通图:
在有向图中
8连通分量:
无向图的一个极大的连通子图
强连通分量:
有向图的一个极大的强连通子图
9极小连通子图:
将子图中任何一条边删除后该子图都不再连通,则给子图是〜
极大连通子图:
向子图中再加入其他任何一个顶点及其相关联的边后该子图都不连通,则给子图是〜
10图的生成树:
包含图中所有顶点的一个极小连通子图。
注:
n个顶点的图的生成树包含有n-1条边;若包含图的所以顶点的子图的边〉n-1,则说明
图中一定含有环;若包含图的所以顶点的了图的边<n-l,则说明图一定是非连通的;
2.
有向图、无向图邻接矩阵表示法和邻接表表示法
注:
(1)无向图的邻接矩阵是一个对称矩阵;
(2)无向图的邻接矩阵中D(Vi)=第i行或者第i列“1”的个数/第i行或第i列元素之和;
(3)无向图中有n个顶点、e条边则其邻接表中有n个表头结点和2e个表结点;
(4)无向图的邻接表中D(Vi)=Mi个单链表中表结点的个数;
(5)有向图的邻接矩阵中D(Vi)=ID(Vi)+0D(Vi)其中,
ID(Vi)=第1列中T'的个数
OD(Vi)=第1行中“I”的个数
(6)有向图中有n个顶点、e条边则其邻接表中有n个表头结点和e个表结点;
(7)有向图的邻接表中D(Vi)=ID(Vi)+OD(Vi)其中,
OD(Vi)=第1个单链表中表结点的个数;
ID(Vi)=逆邻接表中第i个单链表中表结点的个数;
或者=邻接表中值域=Vi的表结点的个数;
3.网的领接矩阵表不
邻接矩阵
并给出相应搜索的顶点
★图的广度优先搜索相当于树的层次遍历
★深度优先搜索,用栈来暂存访问过的顶点
★广度优先搜索,用队列来暂存访问过的顶点
(1)连通图的深度优先搜索步骤:
首先访问出发点(Vi),然后任选一个与Vi的未被访问过的邻接点Vj,再以Vj为新的出发点继续进行深度优先搜索,直到图中所有顶点均被访问过。
(2)连通图的广度优先搜索步骤:
首先访问出发点(Vi),然后依次访问与Vi的未被访问过的邻接点Vj,……Vk,再以Vj……Vk为新的出发点继续进行广度优先搜索,直到图中所有顶点均被访问过。
深度优先搜索序列:
VI,V2,V3,广度优先搜索序列:
VI,V2,V4,
6.生成树和最小生成树的概念
(1)图的生成树:
包含图中所有顶点的一个极小连通子图;
(2)树的权:
指树中所有边上权之和;
(3)最小生成树:
是指树的权最小的生成树;
7.Prim算法的基本思想,并能据此用图不法表示出求给定网的一棵最小生成树的过程
(1)Prim算法的基本思想:
1初始化:
U={Vi},TE={};
2找U中顶点关联的所有边中权值最小的边(u,v),如果u£u,vGV-U,则最小生成树包括边(u,v),即:
把V加入U中,把(u,V)加入TE中;
3重复执行②,直到U=V才结束;
(2)构造最小生成树的过程:
S1©
\12/①U={V2}TE={}
35②U={V2,V1}TE={(V2,V1)}
/I3XJ③U={V2,V1,V3}TE={(V2,V1),(V1,V3),}
(yA-"V5、;④U={V2,V3,V1,V4}TE={(V2,V1),(VI,V3),(V3,V4)}
2'J⑤U={V2,V3,V1,V4,V5}TE={(V2,V1),(VI,V3),(V3.V4),(V4.V5)}
8.拓扑排序的基本概念及给出一个有向图的拓扑序列
(1)拓扑排序:
指找一个有向图的一个拓扑序列的过程。
★拓扑排序只能用在有向图中;
★拓扑排序得到的序列一般不唯一;
★拓扑排序不能用于含有环或者是回路的有向图中;
★检查有向图中是否含有环或者是回路的方法有:
拓扑排序和按深度优先搜索
(2)给出一个有向图的拓扑序列(找入度=0)°
拓扑序列:
VI,V5,V2,V4,V3
第六章查找表
1.集合:
山任意一些可分辨的对象构成的整体
★确定性:
元素x是否属于集合A一定是确定★唯一性:
同一集合的各个元素是互不相同的
★空集:
集合中没有元素
★集合的逻辑结构的基本特点:
任何两个元素之间都没有逻辑关系
2.查找表:
由同一数据类型的元素构成的集合。
3.查找表包括静态查找表(只提供查找、读表元)
动态查找表(只提供查找、读表元、插入、删除、初始化)
4.静态查找表的顺序表的顺序查找算法:
从表的第n个位置开始,从后往前依次将各个位置上的数据元素的键值与给定值K比较,如果相等,则返回该键值的位置,否则,查找不成功
5.查找长度:
数据元素的键值与给定值K的比较次数
平均查找长度:
ASL=J/»C(Pi为查找第i个元素的概率;Ci找到第i个元素所比较的次数)
等概率事件的平均查找长度:
asl=£PC=
日2
6.有序表:
对于任何一个顺序表,若其中的所有结点按键值的某种次序排列。
二分查找算法:
R.item[mid],key==k,说明mid就是我们找到的位置
R.item[mid].key>k,说明我们找到的位置在low和mid之间,令mid=high-l
R.item[mid].key 7.二叉排序树的概念: 要么是一棵空树,要么是一棵满足下列要求的二叉树: 1如果左子树不为空,则左子树上所有的结点都小于根结点; 2如果右子树不为空,则右子树上所有的结点都大于根结点; 3左右了树都是一个二叉排序树; 二叉排序树的性质: 用中序遍历二叉排序树得到的序列是递增的序列; 8.二叉排序树的查找算法的基本思想: 1若t—key==K,查找成功,返回t指针 2若t-key〉K,继续查找其左子树 3若t-key 4若t==NULL,说明查找失败 9.二叉排序树插入运算的实现方法: (1)原则: 必须保证插入后仍然是一棵二叉排序树 (2)方法: 当查找K不成功而终止时,就是恰好找到了以K为键值的新结点在二叉排序树上的插入位置。 ★以(19,14,22,1,66,21,83,27,56,13,10)构造一棵二叉排序树。 19 22 27)(83 10.散列函数: 将键值映射为散列表中存储位置的函数散列表: 按照散列存储方式构造的存储结构 11.散列存储和散列查找的两个主要问题: (1)如何构造“均匀的”散列函数 (2)用什么方法解决冲突 12.同义词: 设有散列函数H和键值kl、k2,若kl#k2且H(kl)=H(k2),则称kl、k2是同义词。 冲突: 假设动态查找表中xl,x2,要求将xl,x2存入同一个散列表,而且它们键值是同义词,则产生冲突。 13.散列函数的评价(选择)原则: 产生冲突越少,散列函数就越好。 14.各种常用的散列函数的构造方法: ①数字分析法②除余法③平方取中法④基数转换法⑤随机数法 15.开散列表的存储组织方式: 设散列函数为H,H的值域为(0,1,……n-1),设置一个“地址向量”Hp[n],其中的每个指针Hp[i]指向一个单链表,该单链表用来存储所有散列地 址为i的数据元素。 查找成功时: ASL=12(1+1+2+1+1+1十2+1+1+2+3+4)=[2 查找失败时: ASL=(2+1+3+2+1+2+3+1+1+1+2+1+5)=13 17.闭散列表的存储组织方法: 将所有的键值存入一个一维数组中,每个元素占用一个地址空间。 18.闭散列表上处理冲突的主要方法: ①线性探测法②二次探测法③多重散列法④公共溢出区法法 19.以(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)为关键字,散列函数为H(i)=1iI,其中,i是每个单词的第一个字母在26个字母表中的位置,利用线性探测法构造闭散列表。 012345678910111213 查找失败: ASL=(5+4+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 数据结构 导论 复习资料 docx