自考数据结构导论复习资料.docx
《自考数据结构导论复习资料.docx》由会员分享,可在线阅读,更多相关《自考数据结构导论复习资料.docx(37页珍藏版)》请在冰豆网上搜索。
自考数据结构导论复习资料
数据结构导论复习
第一章概论
1.数据:
凡能被计算机存储、加工处理的对象。
2.数据元素:
是数据的基本单位,在程序中作为一个整体而加以考虑和处理
3.数据项:
又叫字段或域,它是数据的不可分割的最小标识单位。
4.逻辑结构需要注意的几点:
①逻辑结构与数据元素本身的内容无关
②逻辑结构与数据元素相对位置无关
③逻辑结构与所有结点的个数无关
5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。
6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点?
答:
集合中任何两个结点之间都没有逻辑关系,组织形式松散;
线性结构中结点按逻辑关系依次排列形成一条“锁链”;
树形结构具有分支、层次特性,其形态有点像自然界中的树;
图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。
7.运算是在逻辑结构层次上对处理功能的抽象
8.基本运算的含义?
答:
假如
是S上的一些运算的集合,
是
的一个子集,使得
中每一运算都可以“归约”为
中的一个或多个运算,而
中任一运算不可归约为别的运算,则称
中运算为基本运算
9.数据结构是指由一个逻辑结构S和S上的一个基本运算集
构成的整体(S,
)。
10.数据结构涉及数据表示和数据处理两个方面
11.存储结构的含义和四种基本存储方式的基本思想?
答:
存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。
一个存储结构应包含三个主要的部分:
存储结点、机内表示和附加设施。
存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。
12.运算实现与运算的联系与区别?
答:
运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。
13.算法的概念和分类?
答:
算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械地求解。
算法的类型有:
运行终止的程序可执行部分、伪语言算法和非形式算法(根据描述算法语言不同)
14.算法在给定输入下的计算量的含义和估算的方法?
答:
算法在给定输入下的计算量是指根据该类问题的特点合理地选择一种或几种操作作为“标准操作”,确定每个算法在给定输入下共执行多少次标准操作,并将此次数规定为该算法在给定输入下的计算量。
估算的方法有:
最坏时间复杂度和平均时间复杂度。
15.最坏情况时间复杂性和平均时间复杂性的概念?
答:
最坏情况时间复杂性也称为最坏时间复杂度,是指以算法在所有输入下的计算量的最大值作为算法的计算量;平均情况时间复杂性也称为平均时间复杂度,是指以算法在所有输入下的计算量的加权平均值作为算法的计算量;
16.空间复杂性指的是一个算法除输入数据占存储空间之外所需要的附加存储空间的大小。
17.算法的性质:
正确性、易读性、健壮性和高效率。
第二章线性表
1.线性结构:
是n(n≥0)个结点的有穷序列。
2.线性结构的基本特征:
若至少含有一个结点,则除起始结点没有直接前趋外,其他结点
有且仅有一个直接前趋;除终端节点没有直接后继外,其他结点有且仅有一个直接后继。
3.线性表的逻辑结构是线性结构
4.线性表的六种基本运算的功能?
答:
⑴初始化(L),功能是建立一个空表
⑵求表长(L),功能是返回线性表L的长度
⑶读表元(L,i),功能是返回线性表L的第i个结点
⑷定位(按值查找)(L,X),功能是返回找到的结点集合中序号的最小值,否则返回值为0(说明没有找到)
⑸插入(L,X,i),功能是在线性表L的地i个位置上增加一个值为X的新结点(整个表长+1)
⑹删除(L,i),功能是撤销线性表L的第i个位置结点(整个表长-1)
5.顺序表表示法的基本思想、特点
答:
基本思想是:
按照顺序存储方式,顺序表的一个存储结点存储线性表的一个结点的内容,即数据元素,所有存储结点按相应数据元素建的逻辑关系决定的次序依次排列。
特点:
逻辑结构中相邻的结点在存储结构中仍相邻。
6.区别顺序表的容量与线性表的表长?
答:
顺序表的容量是指定义顺序表时的的值,而线性表的表长是指其中包含的结点个数。
7.顺序表中的地址计算:
的地址
(1)*l,b是首地址,l是每个结点占的空间
7.掌握顺序表上实现插入、删除和定位运算的三个算法P18-20
8.单链表表示法的基本思想——用指针表示结点间逻辑关系
9.单链表的结点形式:
答:
由数据域和指针域两部分组成;这两部分各自的作用分别是数据域是用于存储线性表的一个数据元素的,指针域是用于存放一个指针的,该指针指向本结点所含数据元素的直接后继所在的结点。
10.头指针和头结点的作用?
答:
头指针是一个指向链表开始结点的指针,单链表由头指针唯一确定;头结点是我们人为地在链表的开始结点之前附加的一个结点,有了头结点之后,头指针指向头结点,不论链表是否为空,头指针总是非空的,而且头指针的设置使得对链表的第一位置上的操作和在其他位置上的操作一致。
11.单链表上实现插入、删除和定位三种运算的三个算法:
P26-28
12.插入算法中所包含的指针操作:
()→→→→;
删除算法中所包含的指针操作:
→→→(q);
13.()的作用:
①生成一个结点
②形式一条指针
14.循环链表的组织方法:
将单链表中的尾结点的改成指向头结点的指针,就形成了循环链表。
循环链表优点:
可以从表中任一结点出发都可以向后扫描整表。
15.双链表的结点形式:
刻画双链表结构的对称性的语句:
p→→p→→;
16.顺序表的主要优点和主要缺点:
优点:
①无需为表示结点间的逻辑关系而增加额外的存储空间
②可以方便地随机存取表中的任意结点
缺点:
①插入和删除运算不方便
②分配内存空间采用静态分配方式
17.链表的主要优点:
①插入和删除运算方便,只需要修改指针,不需要移动结点
②分配内存空间采用动态分配方式
18.字符串:
以字符为数据元素,以线性结构为逻辑结构的数据。
19.串的逻辑结构(是线性结构)和串的特点(是由0个或多个字符组成的有穷序列)
20.串的基本运算的功能:
判等()的功能是两个串的长度要相等,而且对应位置的字符都要相同。
21.串的顺序存储方法(紧缩格式和非紧缩格式)和链接存储方法
第三章栈、队列和数组
1.栈的基本运算及由此而决定的栈的基本特点
栈是一种只允许在栈顶进行插入、删除的特殊线性表;其基本特点是采用“后进先出”操作;
2.栈的基本运算:
①初始化(S)②进栈(S,X)③退栈(S)
④读栈顶元素(S)⑤判断栈空(S)
3.顺序栈“上溢”、“下溢”的概念
“上溢”:
顺序栈在进行进栈时,超过了顺序栈的最大的容量
“下溢”:
顺序栈在进行退栈时,栈中的元素少于0个元素
4.进栈和退栈运算在顺序栈上的实现算法:
P44
5.顺序栈上的简单算法(初始化,判栈空,取栈顶元素)
6.链栈的结点形式及其描述:
用来存放该结点的数据元素
用来存放指向下一个数据元素
7.链栈上实现进栈和退栈的算法P46
8.链栈上的简单算法(初始化,判栈空,取栈顶元素)
9.队列的基本运算及由此决定的队列的特点
队列是一种只允许在对头进行插入在队尾进行删除的特殊线性表;其基本特点是采用“先进先出”操作;
10.顺序队上的“假溢出”及其解决方法:
顺序队在进行多次入队、出队后,顺序队已经满了,但顺序队中的大部分空间是空的;
解决方法:
将顺序队改成循环队
11.循环队队满、队空的条件:
判断循环栈满的条件:
((→1))→
判断循环栈空的条件:
→→
12.链队的结点形式及其链队的组织方法:
13.在链队上实现入队、出队的算法P56-57
14.数组的逻辑结构是线性结构的推广
15.二维数组的基本运算是读与写
16.二维数组:
,其中a[0][0]是首地址,k是每个数据元素存储单元。
17.稀疏矩阵的三元组表示法:
()
((1,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3))
第四章树
1.树的定义:
是n(n>0)个结点的有穷集合,满足:
①有且仅有一个称为根的结点
②其余结点分为m(m≥0)个互不相交的非空集合T1,T2……,这些集合中的每一个都是一棵树,称为根的子树。
2.树形结构的有关术语及其含义
①根结点
②双亲结点和孩子结点
③兄弟结点和堂兄弟结点
④子孙结点和祖先结点
⑤树的层次、树的高度和树的度
3.二叉树的逻辑结构、特点和五种基本形态
(1):
二叉树是n(n≥0)个结点的有穷集合,满足:
①有且仅有一个称为根的结点
②其余结点分为2个互不相交的集合T1,T2,T1是左子树,T2是右子树,且T1,T2也都是一棵二叉树。
(2)特点:
①二叉树是棵有序树
②二叉树的度≤2
(3)五种基本形态
4.二叉树的基本运算和性质
(1)二叉树的基本运算:
①初始化()
②求根()
③求双亲()
④求左孩子()求右孩子()
⑤建树()
⑥剪枝()和()
(2)二叉树的性质:
①第i层上,最多有
个结点
②深度是K,最多总有
是针对普通二叉树
③n02+1
④具有n个结点,深度
是针对完全二叉树
⑤按照从上到下,从左到右的顺序编号,
5.二叉链表的结点形式及其描述,二叉链表中各结点的联系方法及根指针的作用
(1)二叉链表的结点形式
是存放该结点的数据元素,是存放指向该结点的左孩子的指针,是存放指向该结点的右孩子的指针。
(2)根指针的作用,是用来指明根结点。
6.满二叉树和完全二叉树的概念
(1)满二叉树是深度为K的二叉树的总共结点数为
(2)完全二叉树是在满二叉树上少0个或者从最下层的最右边开始少起的二叉树
7.设计二叉树上基于三种遍历的简单算法
8.判定树和哈夫曼树的概念
(1)判断树是用来描述分类过程的二叉树
(2)哈夫曼树是构造带权路径长度最小的二叉树
9.哈夫曼树的特性:
①m个权值构造的哈夫曼树的结点总数为21
②m个权值构造的哈夫曼树后权值都处在叶子结点上
③在哈夫曼树中,权值越大离根越近
④在哈夫曼树中,没有度为1的结点
10.将树转化成二叉树时,得到的二叉树的右子树永远为空
11.在n个结点的二叉链表中,总共有2n个指针,其中,非空指针数为1,空指针数为1
12.三叉链表的好处是方便每个结点找其双亲结点
13.讨论树、森林和二叉树的关系目的是想借助二叉树上的运算方法来实现对树的一些运算
14.要将先序、中序和后序遍历序列中的两种还原成唯一二叉树时,必须要有中序序列
15.
附录:
树这章可以出的应用题
1.二叉树二叉链表图
2.二叉链表图二叉树
(是上题中的逆操作)
3.二叉树顺序存储结构图
操作规则:
①完全化
②按从上到下,从左到右编号
③依次存入对应的数组中的位子
A
B
C
D
E
F
G
H
12345678910111213
4.顺序存储结构图二叉树
(是上题中的逆操作)
5.二叉树写出先序、中序和后序遍历
先序()
中序()
后序()
6.先序和中序或者先序和后序序列二叉树
(1)先序序列:
中序序列:
(2)后序序列:
中序序列:
7.树孩子链表表示法
8.树孩子兄弟链表表示法
9.树双亲表示法
10.树二叉树
11.森林二叉树
12.二叉树森林
13.哈夫曼树的构造
给定权值给7,18,3,32,5,26,12,8,构造哈夫曼树并计算其带权路径长度
带权路径长度=
=298
第五章图
1.图状结构的定义并熟悉有关术语
(1)图的定义:
图由两个集合构成,记作(V,E),其中V是顶点的有穷非空集合,E是边的集合,并且边是顶点集合的无序对或有序对集合。
(2)图的术语:
①无向图:
顶点点偶对是无序的记作:
(,)
有向图:
顶点点偶对是有序的记作:
<,>
②无向完全图:
任何两个顶点都有边关联的无向图(n个顶点无向完全图总有边
)
有向完全图:
任何两个顶点都有弧关联的有向图(n个顶点有向完全图总有边 )
③无向图顶点的度:
与该顶点关联的边的数目;
有向图顶点的度=入度+出度
(入度:
以该顶点为终点的边数;出度:
以该顶点为始点的边数;)
④权:
图中边上附带的值;
⑤路径:
是从一个顶点到另一个顶点的序列;
简单路径:
序列中顶点不重复的路径;
环/回路:
第一个顶点和最后一个顶点相同的路径;
简单环/回路:
除了第一个顶点和最后一个顶点相同外,其余顶点均不重复的回路;
⑥子图:
设图(V,E),若E' E,V' V,且E'中的边关联的顶点都在V'中,则称G'=(V',E')是G的子图;
⑦连通图:
在无向图中,任何两个顶点都存在Vi到Vj的路径
强连通图:
在有向图中
⑧连通分量:
无向图的一个极大的连通子图
强连通分量:
有向图的一个极大的强连通子图
⑨极小连通子图:
将子图中任何一条边删除后该子图都不再连通,则给子图是~
极大连通子图:
向子图中再加入其他任何一个顶点及其相关联的边后该子图都不连通,则给子图是~
⑩图的生成树:
包含图中所有顶点的一个极小连通子图。
注:
n个顶点的图的生成树包含有1条边;若包含图的所以顶点的子图的边>1,则说明图中一定含有环;若包含图的所以顶点的子图的边<1,则说明图一定是非连通的;
2.有向图、无向图邻接矩阵表示法和邻接表表示法
无向图邻接矩阵邻接表
有向图邻接矩阵
邻接表逆邻接表
注:
(1)无向图的邻接矩阵是一个对称矩阵;
(2)无向图的邻接矩阵中D()=第i行或者第i列“1”的个数/第i行或第i列元素之和;
(3)无向图中有n个顶点、e条边则其邻接表中有n个表头结点和2e个表结点;
(4)无向图的邻接表中D()=第i个单链表中表结点的个数;
(5)有向图的邻接矩阵中D()()()其中,
()=第i列中“1”的个数
()=第i行中“1”的个数
(6)有向图中有n个顶点、e条边则其邻接表中有n个表头结点和e个表结点;
(7)有向图的邻接表中D()()()其中,
()=第i个单链表中表结点的个数;
()=逆邻接表中第i个单链表中表结点的个数;
或者=邻接表中值域的表结点的个数;
3.网的领接矩阵表示
带权有向图(有向网)邻接矩阵
4.连通图的深度优先搜索和广度优先搜索的基本思想、基本步骤,并给出相应搜索的顶点序列
深度优先搜索序列:
V0,V1,V3,V7,V4,V2,V5,V6
广度优先搜索序列:
V0,V1,V2,V3,V4,V5,V6,V7
★图的深度优先搜索相当于树的先根遍历
★图的广度优先搜索相当于树的层次遍历
★深度优先搜索,用栈来暂存访问过的顶点
★广度优先搜索,用队列来暂存访问过的顶点
(1)连通图的深度优先搜索步骤:
首先访问出发点(),然后任选一个与的未被访问过的邻接点,再以为新的出发点继续进行深度优先搜索,直到图中所有顶点均被访问过。
(2)连通图的广度优先搜索步骤:
首先访问出发点(),然后依次访问与的未被访问过的邻接点,……,再以……为新的出发点继续进行广度优先搜索,直到图中所有顶点均被访问过。
5.非连通图的遍历方法以及图的连通分量的求法
连通分量
深度优先搜索序列:
V1,V2,V3,V5,V4,V6,V8,V7
广度优先搜索序列:
V1,V2,V4,V3,V5,V6,V8,V7
6.生成树和最小生成树的概念
(1)图的生成树:
包含图中所有顶点的一个极小连通子图;
(2)树的权:
指树中所有边上权之和;
(3)最小生成树:
是指树的权最小的生成树;
7.算法的基本思想,并能据此用图示法表示出求给定网的一棵最小生成树的过程
(1)算法的基本思想:
①初始化:
{},{};
②找U中顶点关联的所有边中权值最小的边(u,v),如果
,
,则最小生成树包括边(u,v),即:
把v加入U中,把(u,v)加入中;
③重复执行②,直到才结束;
(2)构造最小生成树的过程:
①{V2}{}
②{V21}{(V21)}
③{V213}{(V21),(V13),}
④{V2314}{(V21),(V13),(V34)}
⑤{V23145}{(V21),(V13),(V34),(V45)}
8.拓扑排序的基本概念及给出一个有向图的拓扑序列
(1)拓扑排序:
指找一个有向图的一个拓扑序列的过程。
★拓扑排序只能用在有向图中;
★拓扑排序得到的序列一般不唯一;
★拓扑排序不能用于含有环或者是回路的有向图中;
★检查有向图中是否含有环或者是回路的方法有:
拓扑排序和按深度优先搜索
(2)给出一个有向图的拓扑序列(找入度=0)
拓扑序列:
V1,V5,V2,V4,V3
第六章查找表
1.集合:
由任意一些可分辨的对象构成的整体
★确定性:
元素x是否属于集合A一定是确定
★唯一性:
同一集合的各个元素是互不相同的
★空集:
集合中没有元素
★集合的逻辑结构的基本特点:
任何两个元素之间都没有逻辑关系
2.查找表:
由同一数据类型的元素构成的集合。
3.查找表包括静态查找表(只提供查找、读表元)
动态查找表(只提供查找、读表元、插入、删除、初始化)
4.静态查找表的顺序表的顺序查找算法:
从表的第n个位置开始,从后往前依次将各个位置上的数据元素的键值与给定值K比较,如果相等,则返回该键值的位置,否则,查找不成功
5.查找长度:
数据元素的键值与给定值K的比较次数
平均查找长度:
(为查找第i个元素的概率;找到第i个元素所比较的次数)
等概率事件的平均查找长度:
6.有序表:
对于任何一个顺序表,若其中的所有结点按键值的某种次序排列。
二分查找算法:
[],说明就是我们找到的位置
[]>k,说明我们找到的位置在和之间,令1
[]7.二叉排序树的概念:
要么是一棵空树,要么是一棵满足下列要求的二叉树:
①如果左子树不为空,则左子树上所有的结点都小于根结点;
②如果右子树不为空,则右子树上所有的结点都大于根结点;
③左右子树都是一个二叉排序树;
二叉排序树的性质:
用中序遍历二叉排序树得到的序列是递增的序列;
8.二叉排序树的查找算法的基本思想:
①若t→,查找成功,返回t指针
②若t→>K,继续查找其左子树
③若t→<K,继续查找其右子树
④若,说明查找失败
9.二叉排序树插入运算的实现方法:
(1)原则:
必须保证插入后仍然是一棵二叉排序树
(2)方法:
当查找K不成功而终止时,就是恰好找到了以K为键值的新结点在二叉排序树上的插入位置。
★以(19,14,22,1,66,21,83,27,56,13,10)构造一棵二叉排序树。
10.散列函数:
将键值映射为散列表中存储位置的函数
散列表:
按照散列存储方式构造的存储结构
11.散列存储和散列查找的两个主要问题:
(1)如何构造“均匀的”散列函数
(2)用什么方法解决冲突
12.同义词:
设有散列函数H和键值k1、k2,若k1≠k2且H(k1)=H(k2),则称k1、k2是同义词。
冲突:
假设动态查找表中x1,x2,要求将x1,x2存入同一个散列表,而且它们键值是同义词,则产生冲突。
13.散列函数的评价(选择)原则:
产生冲突越少,散列函数就越好。
14.各种常用的散列函数的构造方法:
①数字分析法②除余法③平方取中法④基数转换法⑤随机数法
15.开散列表的存储组织方式:
设散列函数为H,H的值域为(0,1,……n-1),设置一个“地址向量”[n],其中的每个指针[i]指向一个单链表,该单链表用来存储所有散列地址为i的数据元素。
开散列表的处理冲突的方法:
拉链表
16.给(13,41,15,44,6,68,12,25,38,64,19,49)序列,以H(k)13为散列函数,构造一个开散列表。
查找成功时:
= (1+1+2+1+1+1+2+1+1+2+3+4)=
查找失败时:
= (2+1+3+2+1+2+3+1+1+1+2+1+5)=
17.闭散列表的存储组织方法:
将所有的键值存入一个一维数组中,每个元素占用一个地址空间。
18.闭散列表上处理冲突的主要方法:
①线性探测法②二次探测法③多重散列法④公共溢出区法法
19.以(,,,,,,,,,,,)为关键字,散列函数为H(i)=
,其中,i是每个单词的第一个字母在26个字母表中的位置,利用线性探测法构造闭散列表。
查找成功:
= (1+2+1+1+1+1+2+4+5+2+5+6)=
查找失败:
= (5+4+3+2+1+9+8+7+6+5+4+3+2+1)=
第七章文件
1.文件的逻辑结构:
是由特性相同的记录所构成饿集合,其中每个记录由一个或多个数据项构成。
2.文件的两类主要的基本运算:
检索:
①顺序存取 ②直接存取 ③按关键字存取
修改:
①插入一个记录②删除一个记录③更新一个记录
★记录:
每个数据元素就是一个记录(①逻辑记录 ②物理记录)
3.文件存储结构的含义:
文件在存储介质上的实际组织形式
文件存储结构种类:
①顺序文件 ②散列文件 ③索引文件
★顺序文件:
适应于磁带存储器,也适应磁盘存储器
★索引文件:
只适应于磁盘存储器
★散列文件:
只适应于外存储器
★散列文件的存储单位是桶
★索引文件的两种存取方式:
①ISAM:
索引顺序存取方法
②VSAM:
虚拟存取方法
4.散列文件的优缺点:
优点:
散列文件具有随机存放、记录不需要进行排序、插入删除方便、存取速度快、不需要索引区和节省存储空间
缺点:
散列文件不能顺序存取,只能按关键字随机存取,在经过多次插入、删除后,可能出现溢出桶满而基桶内多数记录已被删除的情况,此时需要重新组织文件。
第八章排序
1.排序的定义:
将一组任意排列的数据元素重新排列成一个按键值有序的序列的过程。
2.排序包括:
内部排序(待排序的数据元素都在内存中){插入排序、交换排序、选择排序和归并排序}
外部排序(待排序的数据元素有在外存中)
3.内部排序算法时间复杂度的度量方法