《数据结构》导学文档格式.docx
- 文档编号:22173704
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:55
- 大小:49.13KB
《数据结构》导学文档格式.docx
《《数据结构》导学文档格式.docx》由会员分享,可在线阅读,更多相关《《数据结构》导学文档格式.docx(55页珍藏版)》请在冰豆网上搜索。
例1.2:
请给出下列程序段的时间复杂度(S视为一个原操作)。
(1)for(inti=0;
i<
n;
i++)
S;
O(n)
(2)for(inti=0;
for(intj=i;
j<
j++)
S;
O(n2)
例1.3:
求(n2+nlog2n+1)/n的数量级是:
O(n)
例1.4:
结合具体的算法,求时间复杂度,如:
顺序存储线性表,表元素插入的时间复杂度是:
链接存储线性表,表结点插入的时间复杂度是:
O
(1)
快速排序的时间复杂度是:
O(n*log2n)
5、课后习题:
所有选择、填空题、计算题。
第二章
线性表
1、线性表的抽象数据类型:
(掌握函数的功能)
例2.1:
请写出下列程序段执行完后的结果。
InitList(La);
inta[]={32,45,24,64,79,8,16};
For(inti=0;
7;
Insert(La,i,a[i]);
Delete(La,a[3]/2);
intx=GetElem(La,5);
InsertRear(La,x);
TraverseList(La);
结果:
452464798168
这种题型注意书写格式,如果题目要求是“请写出下列程序段执行完后的线性表”,则答案为“La=(45,24,64,79,8,16,8)”
2、在顺序存储和链接存储结构下的线性表的插入、删除和单链表求长度函数的实现。
(其它函数一般了解)
顺序存储:
判空:
L.length==0
判满:
L.length==L.listsize
链接存储:
HL==NULL
3、几种特殊的单链表:
数组存储单链表,附加表头结点单链表,循环链表。
例2.2:
在下列数组a中链接着一个线性表,表头指针为a[0].next,则该线性表为(38,56,25,60,42,74)。
(注:
注意书写格式)
a
1
2
3
4
5
6
7
8
data
60
56
42
38
74
25
next
4、课后习题:
所有选择、填空题和简答题
第三章
栈和队列
1、栈的运算:
例4.1:
请写出下列程序段执行后的结果。
InitStack(a);
intb[]={5,17,24,18,32,9};
for(inti=0;
i<
4;
i++)
push(a,b[i]);
intx=pop(a)+32;
push(a,x);
while(!
StackEmpty(a))
cout<
<
pop(a)<
”“;
结果:
5024175
2、顺序存储和链接存储的出栈和入栈算法,及相应的时间复杂度O
(1)。
S.top==-1
S.top==StackMaxSize-1
判空:
HS==NULL
3、中缀算术表达式和后缀算术表达式的转化,及后缀算术表达式的求值。
例4.2:
将下列中缀算术表达式转化为后缀算术表达式,并求值。
3+4/(25-(6+15))*8@
答案:
3425615+-/8*+@
值为11
注:
若表达式后有“@”符号,则转化后在表达式后也加上“@”
4、队列的运算:
例4.3:
InitQueue(q1);
InitQueue(q2);
inta[]={41,67,34,0,69,24,78,58,62,64};
10;
i++){
if(a[i]%2==1)QInsert(q1,x);
elseQInsert(q2,x);
}
QueueEmpty(q1)&
&
!
QueueEmpty(q2))
Qdelete(q1)<
”“<
Qdelete(q2)<
endl;
41346706924
5、顺序存储和链接存储的出队和入队算法。
顺序存储:
Q.front==Q.rear
Q.front==(Q.rear+1)%QueueMaxSize
队首元素:
Q.queue[(Q.front+1)%QueueMaxSize]
HQ.front==NULL或HQ.rear==NULL
HQ.front->
6、课后习题:
所有选择、填空题、简答题
第四章:
串
1、基本概念:
串、子串、空串、串长度、串相等、子串在主串中位置
2、存储结构:
定长顺序存储、堆分配存储、块链存储及各自特点
3、块运算函数:
求子串、串连接、求串长、串比较、子串位置及串赋值
4、串的特殊性(与线性表比较)、串应用中的特点(下标定位)
5、课后习题:
所有选择、填空、简答题
第五章
稀疏矩阵和广义表
1、求数组元素的存储位置(行序、列序),特殊矩阵压缩存储到一维数组中的方法。
2、稀疏矩阵的三元组线性表表示,转置矩阵的三元组线性表表示及转置矩阵算法时间复杂度为O(n*t)。
例3.1:
请写出下列稀疏矩阵的三元组线性表表示及转置矩阵的三元组线性表表示。
M=((1,4,1),(2,1,2),(2,6,3),(3,3,4),(4,2,1),(4,6,3))
M’=((1,2,1),(2,4,1),(3,3,4),(4,1,1),(6,2,3),(6,4,3))
3、求广义表的表头、表尾,长度和深度,及算法时间复杂度。
都是O(n)。
例3.2:
请写出下列广义表的长度和深度。
长度深度
()A=((a,b),(c,d))22
()B=(a,(b,(c,d)),(e))33
()C=((a,(b,(),c),((d),e)))14
所有选择、填空题和计算题
第六章
树和二叉树
1、树的基本概念及广义表表示:
例5.1:
一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J))),则树中的结点数为10个,树的深度为4,树的度为3。
2、树和二叉树的性质:
例5.2:
一棵深度为5的满二叉树中的结点数为31个,一棵深度为3的满四叉树中的结点数为21个。
3、二叉树的先序、中序、后序和按层遍历。
例5.3:
假定一棵二叉树广义表表示为A(B(,D(G)),C(E,F)),分别写出对它进行先序、中序、后序和按层遍历的结果。
先序:
ABDGCEF
中序:
BGDAECF
后序:
GDBEFCA
按层:
ABCDEFG
例5.4:
根据下述遍历,画出对应二叉树。
、
ABDEGHCFIJ
中序:
DBGEHACIFJ
答案:
A(B(D,(E(G,H))),C(,E(I,J)))
4、求二叉树深度算法的时间复杂度为:
O(log2n)
二叉树的应用部分
1、二叉线索树定义及建立:
P133
2、二叉树查找的递归和非递归算法及时间复杂度O(log2n)。
3、二叉树与树、森林的遍历与转换。
3、二叉链表的定义及存储结构及树的孩子——兄弟表示法
5、哈夫曼树:
根据一组数据构造哈夫曼树,并求出带权路径长度WPL。
所有选择、填空题,简答题
第七章
图
1、图的存储结构:
邻接矩阵、邻接表。
求出度、入度
2、图的深度优先搜索遍历DFS和广度优先搜索遍历BFS。
例7.1:
已知一个有向图的顶点集V和边集G分别为:
V={a,b,c,d,e,f,g,h};
E={<
a,b>
<
a,c>
b,f>
c,d>
c,e>
d,a>
d,f>
d,g>
e,g>
f,h>
};
假定该图采用邻接矩阵表示,则分别写出从顶点a出发进行深度优先搜索遍历和广度优先搜索遍历得到的顶点序列。
DFS——abfhcdge
BFS——abcfdehg
3、区别图的深度优先搜索遍历和广度优先搜索遍历算法。
(1)数据类型为adjmatrix——邻接矩阵
(2)数据类型为adjlist——邻接表
(3)程序较长,有队列——广度优先搜索遍历
例7.2:
voidAI(adjmatrixGA,inti,intn)
{
cout<
’‘;
visited[i]=true;
for(intj=0;
j<
n;
j++)
if(GA[i][j]!
=0&
GA[i][j]!
=MaxValue&
visited[j])
AI(GA,j,n);
}
该算法的功能为:
从初始点Vi出发深度优先搜索由邻接矩阵GA所表示的图的递归算法。
4、图的最小生成树:
Prim算法和Kruskal算法
例7.3:
已知一个图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7}
E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10,(4,6)4,(5,7)20}
按照Prim算法从V0出发,画出最小生成树,并写出依次得到的各条边及最后的边集数组,并求出最小生成树的权值。
08165
(1)最小生成树:
2520
327
10
644
(2)依次得到的各条边:
(0,3)2(0,2)5(0,1)8(1,5)6(3,6)10(6,4)4(5,7)20
(3)边集数组:
起点
终点
权值
10
20
(4)权为55
例7.4:
按照克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。
(0,3)2,(4,6)4,(0,2)5,(1,5)6,(0,1)8,(3,6)10,(5,7)20
5、DAG图的拓扑排序:
例7.5:
V={0,1,2,3,4,5,6,7,8};
E={<
0,2>
1,3>
1,4>
2,4>
2,5>
3,6>
3,7>
4,7>
4,8>
5,7>
6,7>
7,8>
若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,则按教材中介绍的进行拓扑排序的算法,写出得到的拓扑序列。
1,3,6,0,2,5,4,7,8
所有填空题、简答题
第九章
查找
1、各种查找方法的比较:
查找方法
时间复杂度
平均查找长度ASL
顺序查找
(n+1)/2
二分查找
((n+1)/n)log2(n+1)-1
索引查找
顺序:
(n/s+s)/2+1,折半:
log2(n/s+1)+s/2
散列查找
掌握“除留余数法”,解决冲突的“线性探查法”
和“链接法”
2、二分查找算法及判定树。
例8.1:
从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为1和3。
其判定树为:
43(18(12,30),78(56,82(,95)))
3、散列查找:
例8.2:
假定对线性表(38,25,74,52,48)进行散列存储,采用H(K)=K%7作为散列函数,若分别采用线性探查法和链接法处理冲突,则对各自散列表进行查找的平均查找长度分别为2和1.4。
解题过程:
(1)线性探查法解决冲突:
3825745248
散列地址:
34436
散列表:
48
52
ASL=(1+1+2+4+2)/5=2
(2)链接法解决冲突:
382548
5274
4、课后习题:
第十章
内部排序
1、排序分为内排序和外排序。
内排序分为插入、选择、交换、归并和分配排序。
2、内排序方法比较:
排序方法
空间复杂度
稳定性
直接插入排序
O(n2)
T
直接选择排序
F
堆排序
气泡排序
快速排序
最坏情况
二路归并排序
3、堆排序运算及筛选运算的算法描述:
例9.1:
已知一组数据为(38,56,30,25,35,20,18,59),请调整为一个堆。
(59,56,30,38,35,20,18,25)
例9.2:
假定一组数据的初始堆为(84,79,56,42,40,46,50,38),请写出在堆排序阶段前三次对换和筛选运算后数据的排列情况。
答案:
(50,42,46,38,40,56,79,84)
4、快速排序及算法描述:
例9.3:
假定一组记录的排序码为(46,79,56,38,40,80,25,34),则对其进行快速排序的第一次划分的结果为:
[40342538]46[805679]
5、归并排序:
例9.4:
假定一组记录的排序码为(46,79,56,38,40,80,36,40,75,66,84,24),对其进行归并排序的过程中,第三趟归并后的结果为:
[3638404046567980][25667584]
第三部分模拟试卷
模拟试卷一
一、
单选题(每题2分,共20分)
1.
以下数据结构中哪一个是线性结构?
()
A.有向图 B.队列C.线索二叉树 D.B树
2.
在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。
A.p=q;
p->
next=q;
B.p->
q->
next=p;
C.p->
next=q->
next;
p=q;
D.q->
next=p->
3.
以下哪一个不是队列的基本运算?
A.在队列第i个元素之后插入一个元素B.从队头删除一个元素
C.判断一个队列是否为空D.读取队头元素的值
4.
字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串?
A.14B.5 C.6 D.8
5.
由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()。
A.11B.35C.19D.53
以下6-8题基于图1。
6.
该二叉树结点的前序遍历的序列为()。
A.
E、G、F、A、C、D、B
B.
E、A、G、C、F、B、D
C.
E、A、C、B、D、G、F
D.
E、G、A、C、D、F、B
7.
该二叉树结点的中序遍历的序列为()。
A.A、B、C、D、E、G、F
B.E、A、G、C、F、B、D
C.E、A、C、B、D、G、F
E.
B、D、C、A、F、G、E
8.
该二叉树的按层遍历的序列为()。
A.E、G、F、A、C、D、B
B.E、A、C、B、D、G、F
C.E、A、G、C、F、B、D
D.E、G、A、C、D、F、B
9.
下面关于图的存储的叙述中正确的是()。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关
C.用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关
D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
10.
设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?
A.a,g,h,m,n,p,q,x,z B.a,g,m,h,q,n,p,x,z
C.g,m,q,a,n,p,x,h,zD.h,g,m,p,a,n,q,x,z
二、
填空题(每空1分,共26分)
数据的物理结构被分为_________、________、__________和___________四种。
对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。
向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________;
删除一个结点时,需要执行的操作是______________________________(假设栈不空而且无需回收被删除结点)。
对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有双亲,则双亲结点的编号为________。
当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整到____________位置为止。
以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。
表示图的三种常用的存储结构为_____________、____________和_______________。
对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K%7作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。
在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为____________,空间复杂度为___________。
在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构