四川大学级数据结构复习.docx

上传人:b****8 文档编号:9237192 上传时间:2023-02-03 格式:DOCX 页数:48 大小:91.44KB
下载 相关 举报
四川大学级数据结构复习.docx_第1页
第1页 / 共48页
四川大学级数据结构复习.docx_第2页
第2页 / 共48页
四川大学级数据结构复习.docx_第3页
第3页 / 共48页
四川大学级数据结构复习.docx_第4页
第4页 / 共48页
四川大学级数据结构复习.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

四川大学级数据结构复习.docx

《四川大学级数据结构复习.docx》由会员分享,可在线阅读,更多相关《四川大学级数据结构复习.docx(48页珍藏版)》请在冰豆网上搜索。

四川大学级数据结构复习.docx

四川大学级数据结构复习

四川大学“精品课程”

计算机科学与技术专业(本科)

《数据结构》课程

考试说明与模拟试卷

第一部分考试说明

《数据结构》是计算机科学与技术专业统设的一门重要的必修专业基础课,它主要研究数据的各种逻辑结构和在计算机中的存储结构,还研究对数据进行的插入、查找、删除、排序、遍历等基本运算或操作以及这些运算在各种存储结构上具体实现的算法。

由于本课程的主教材采用C++语言描述算法,期末卷面考试也采用C++语言描述,因而要求在做平时作业和上机实验操作时用C++开发工具(如:

VisualC++或C++Builder或BorlandC++)。

考试的题型有:

单选题,填空题,运算题,阅读算法,填写算法和编写算法等。

下面按照主教材中各章次序给出每章的具体复习要求,以便同学们更好地进行期末复习。

第一章绪论

重点掌握的内容:

1.数据结构的二元组表示,对应的图形表示,序偶和边之间的对应关系。

2.集合结构、线性结构、树结构和图结构的特点。

3.抽象数据类型的定义和表示方法。

4.一维和二维数组中元素的按下标和按地址的访问方式以及相互转换,元素地址和数组地址的计算,元素占用存储空间大小和数组占用存储空间大小的计算。

5.普通函数重载和操作符函数重载的含义,定义格式和调用格式。

6.函数定义中值参数和引用参数的说明格式及作用,函数被调用执行时对传送来的实际参数的影响。

7.算法的时间复杂度和空间复杂度的概念,计算方法,数量级表示。

8.一个简单算法的最好、最差和平均这三种情况的时间复杂度的计算。

对于本章的其余内容均作一般掌握。

第二章线性表

重点掌握的内容:

1.线性表的定义和抽象数据类型的描述,线性表中每一种操作的功能,对应的函数名、返回值类型和参数表中每个参数的作用。

2.线性表的顺序存储结构的类型定义,即List类型的定义和每个域的定义及作用。

3.线性表的每一种运算在顺序存储结构上实现的算法,及相应的时间复杂度。

4.链接存储的概念,线性表的单链接和双链接存储的结构,向单链表中一个结点之后插入新结点或从单链表中删除一个结点的后继结点的指针链接过程。

5.单链表中结点的结构,每个域的定义及作用,即LNode类型的定义及结构。

6.带表头附加结点的链表、循环链表、双向链表的结构特点。

7.线性表的每一种运算在单链表上实现的算法及相应的时间复杂度。

8.在顺序存储或链接存储的线性表上实现指定功能的算法的分析和设计。

9.Josephus问题的求解过程。

10.顺序表和线性链表的性能比较及各自使用背景。

对于本章的其余内容均作一般掌握。

第三章数组和广义表

重点掌握的内容:

1.多维数组的逻辑结构特征。

2.多维数组的顺序存储结构及地址计算公式。

3.数组是一种随机存取结构的原因。

4.特殊矩阵和稀疏矩阵的概念。

5.特殊矩阵和压缩存储的下标变换方法。

6.稀疏矩阵的定义和三元组线性表表示。

7.稀疏矩阵的顺序存储、带行指针向量的链接存储,在每一种存储中非零元素结点的结构。

8.稀疏矩阵的转置运算。

9.广义表的定义和表示,广义表长度和深度的计算。

10.广义表上的求表头、表尾运算。

5.广义表的链接存储结构中结点类型的定义,分别求广义表长度和深度的递归算法,它们对应的时间复杂度。

一般掌握的内容:

稀疏矩阵转置的算法描述。

对于本章的其余内容均作一般了解。

第四章栈和队列

重点掌握的内容:

1.栈的定义和抽象数据类型的描述,栈中每一种操作的功能,对应的函数名、返回值类型和参数表中每个参数的作用。

2.栈的顺序存储结构的类型定义,即Stack类型的定义和每个域的定义及作用。

3.栈的每一种运算在顺序存储结构上实现的算法,及相应的时间复杂度。

4.栈的每一种运算在链接存储结构上实现的算法及相应的时间复杂度。

5.算术表达式的中缀表示和后缀表示,以及相互转换的规则,后缀表达式求值的方法。

6.给定n个栈元素,出栈可能或不可能的序列数。

7.队列的定义和抽象数据类型的描述,队列中每一种操作的功能,对应的函数名、返回值类型和参数表中每个参数的作用。

8.队列的顺序存储结构的类型定义,即Queue类型的定义和每个域的定义及作用。

9.队列的每一种运算在顺序存储结构上实现的算法及相应的时间复杂度。

10.利用栈和队列解决简单问题的算法分析和设计。

11.双端队的概念及可能出队序列。

一般掌握的内容:

1.后缀表达式求值的算法,把中缀表达式转换为后缀表达式的算法。

2.队列的链接存储结构,以及实现每一种队列运算的算法和相应的时间复杂度。

对于本章的其余内容均作一般了解。

第五章字符串

重点掌握的内容:

1.串的有关概念及基本运算。

2.串与线性表的关系。

3.串的各种存储结构。

一般掌握的内容:

1.串上各种运算的实现及其时间性能分析。

2.使用C++提供的操作函数构造与串相关的算法解决简单的应用问题。

第六章树和二叉树

重点掌握的内容:

1.树和二叉树的定义,对于一棵具体树和二叉树的二元组表示及广义表表示。

2.树和二叉树的概念,如结点的度、树的度、树叶、分枝结点、树的层数、树的深度等。

3.不同结点数的树和二叉树的形态。

4.树和二叉树的性质,如已知树或二叉树的深度h可求出相应的最多结点数,已知结点数n可求出对应树或二叉树的最大和最小高度。

5.二叉树中结点的编号规则和对应的顺序存储结构。

6.二叉树的链接存储结构及存储结点的类型定义,即BTreeNode类型的定义和每个域的定义及作用。

7.二叉树的先序、中序、后序遍历的递归过程和递归算法,中序遍历的非递归算法,按层遍历的过程和算法,每种算法的时间复杂度。

8.二叉树的先序、中序、后序遍历序列,唯一确定一棵二叉树的原则。

一般掌握的内容:

1.普通树的链接存储结构,GTreeNode类型的定义和每个域的定义及作用。

2.普通树的先根、后根和按层遍历的过程及算法。

3.在链接存储的二叉树上实现指定功能的算法分析和设计。

对于本章的其余内容均作一般了解。

二叉树的应用

重点掌握的内容:

1.二叉搜索树的定义和性质。

2.二叉搜索树查找的递归算法和非递归算法,相应的时间复杂度,查找一个元素的查找长度,即从树根结点到该结点的路径上的结点数。

3.二叉搜索树插入的递归算法和非递归算法,相应的时间复杂度,根据一组数据生成一棵二叉搜索树的过程。

4.堆的定义和顺序存储结构,小根堆和大根堆的异同。

5.向堆中插入元素的过程、算法描述及时间复杂度。

6.从堆中删除元素的过程、算法描述及时间复杂度。

7.哈夫曼树的定义,树的带权路径长度的计算,根据若干个叶子结点的权构造哈夫曼树的过程。

8.顺序二叉树及二叉链表表示二叉树。

对本章的其余内容均作一般了解。

第七章图

重点掌握的内容:

1.图的顶点集和边集的表示。

2.图的一些概念的含义,如顶点、边、度、完全图、子图、路径、路径长度、连通图、权、网等。

3.图的邻接矩阵、邻接表、邻接多重表和十字链表四种存储结构及相应的空间复杂度。

4.存储图使用的vexlist,adjmatrix,adjlist,edgenode,edgeset,edge等类型的定义及用途。

5.图的深度优先和广度优先搜索遍历的过程。

6.对分别用邻接矩阵和用邻接表表示的图进行深度优先搜索遍历的过程、算法描述以及相应的时间复杂度。

7.对分别用邻接矩阵和用邻接表表示的图进行广度优先搜索遍历的过程、算法描述以及相应的时间复杂度。

8.图的生成树、深度优先生成树和广度优先生成树、生成树的权、最小生成树等的定义。

9.根据普里姆算法求图的最小生成树的过程。

10.根据克鲁斯卡尔算法求图的最小生成树的过程。

11.图的拓扑序列和拓扑排序的概念,求图的拓扑序列的方法,对用邻接表表示的图进行拓扑排序的过程。

一般掌握的内容:

1.根据普里姆算法求图的最小生成树的算法描述。

2.根据克鲁斯卡尔算法求图的最小生成树的算法描述。

3.对用邻接表表示的图进行拓扑排序的和算法描述。

4.欧拉问题算法。

对本章的其余内容均作一般了解。

第八章查找

重点掌握的内容:

1.在一维数组上进行顺序查找的过程、算法、平均查找长度和时间复杂度。

2.在一维数组上进行二分查找的过程、递归和非递归算法、平均查找长度和时间复杂度,二分查找一个给定值元素的查找长度(即查找路径上的元素数),二分查找对应的判定树的性质。

3.索引存储的概念,索引表的存储结构和索引项的存储结构,索引查找一个元素的过程、平均查找长度和时间复杂度。

4.散列存储的概念,散列函数、散列表、冲突、同义词、装填因子等术语的含义。

5.利用除留余数法建立散列函数求元素散列地址的方法。

6.利用开放定址法中的线性探查法处理冲突进行散列存储和查找的过程,利用链接法处理冲突进行散列存储和查找的过程。

7.根据除留余数法构造散列函数,采用线性探查法或链接法处理冲突,把一组数据散列存储到散列表中,计算出一个给定值元素的查找长度和查找所有元素的平均查找长度。

8.B_树中每个结点的结构,树根结点或非树根结点中关键字的个数范围和子树的个数范围,B_的结构特性,从B_树上查找一个给定值元素的过程。

一般掌握的内容:

1.索引查找和分块查找算法。

2.B_树查找算法。

3.向B_树中插入元素的过程。

对本章的其余内容均作一般了解。

第九章排序

重点掌握的内容:

1.直接插入、直接选择和冒泡排序的方法,排序过程及时间复杂度。

2.在堆排序中建立初始堆的过程和利用堆排序的过程,对一个分支结点进行筛运算的过程、算法及时间复杂度,整个堆排序的算法描述及时间复杂度。

3.快速排序的方法,对一组数据的排序过程,对应的二叉搜索树,快速排序过程中划分的层数和递归排序区间的个数。

4.递归排序的递归算法,它在平均情况下的时间和空间复杂度,在最坏情况下的时间和空间复杂度。

5.二路归并排序的方法和对数据的排序过程,每趟排序前、后的有序表长度,二路归并排序的趟数、时间复杂度和空间复杂度。

一般掌握的内容:

1.每一种排序方法的稳定性。

2.直接插入排序和直接选择排序的算法。

一般了解的内容:

1.二路归并排序过程中涉及的每个算法描述。

2.冒泡排序算法。

第十章文件

重点掌握的内容:

1.文件的有关概念。

2.文件的逻辑结构及其操作。

3.文件的存储结构(组织方式)分类。

4.评价文件组织效率的标准。

5.顺序文件的特点及外存种类的适应性。

6.顺序文件上各种查询方法的基本思想及对外存种类的要求。

7.索引文件的组织方式和特点。

8.索引文件的的查询和更新操作的基本思想。

9.两种最常用的索引顺序文件(ISAM文件和VSAM文件)的组织方式和特点。

10.在ISAM文件和VSAM文件上查找和更新操作的基本思想。

11.散列文件的组织方式和特点。

12.散列文件的查询和更新操作的基本思想。

13.多关键字文件和其它文件的差别。

14.多重表文件和倒排文件组织方式和特点。

15.多重表文件和倒排文件查询和更新操作的基本思想。

本章其它内容一般掌握

第二部分模拟试卷

模拟试卷一

一、单选题(每题2分,共20分)

1.以下数据结构中哪一个是线性结构?

()

A.有向图  B.队列C.线索二叉树  D.B树

2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。

A.p=q;p->next=q;B.p->next=q;q->next=p;

C.p->next=q->next;p=q;D.q->next=p->next;p->next=q;

3.以下哪一个不是队列的基本运算?

()

A.在队列第i个元素之后插入一个元素B.从队头删除一个元素

C.判断一个队列是否为空D.读取队头元素的值

4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串?

A.14B.5  C.6  D.8

5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()。

图1

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分)

1.数据的物理结构被分为_________、________、__________和___________四种。

2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。

3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________;删除一个结点时,需要执行的操作是______________________________(假设栈不空而且无需回收被删除结点)。

4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有双亲,则双亲结点的编号为________。

5.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整到____________位置为止。

6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。

7.表示图的三种常用的存储结构为_____________、____________和_______________。

8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K%7作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。

9.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为____________,空间复杂度为___________。

10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________个,其子树数目最少为________,最多为________。

三、运算题(每题6分,共24分)

1.

图2

写出下列中缀表达式的后缀形式:

(1)3X/(Y-2)+1

(2)2+X*(Y+3)

2.试对图2中的二叉树画出其:

(1)顺序存储表示的示意图;

(2)二叉链表存储表示的示意图。

  

3.判断以下序列是否是小根堆?

如果不是,将它调整为小根堆。

(1){12,70,33,65,24,56,48,92,86,33}

(2){05,23,20,28,40,38,29,61,35,76,47,100}

4.已知一个图的顶点集V和边集E分别为:

V={1,2,3,4,5,6,7};

E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,

(4,7)20,(5,6)18,(6,7)25};

按照普里姆算法从顶点1出发得到最小生成树,试写出在最小生成树中依次得到的各条边。

四、阅读算法(每题7分,共14分)

1.voidAE(Stack&S){

InitStack(S);

Push(S,3);

Push(S,4);

intx=Pop(S)+2*Pop(S);

Push(S,x);

inti,a[5]={1,5,8,12,15};

for(i=0;i<5;i++)Push(S,2*a[i]);

while(!

StackEmpty(S))cout<

}

该算法被调用后得到的输出结果为:

2.voidABC(BTNode*BT,int&c1,int&c2){

if(BT!

=NULL){

ABC(BT->left,c1,c2);

c1++;

if(BT->left==NULL&&BT->right==NULL)c2++;

ABC(BT->right,c1,c2);

}//if

}

该函数执行的功能是什么?

五、算法填空(共8分)

向单链表的末尾添加一个元素的算法。

VoidInsertRear(LNode*&HL,constElemType&item)

{

LNode*newptr;

newptr=newLNode;

If(______________________)

{

cerr<<"Memoryallocationfailare!

"<

exit

(1);

}

________________________=item;

newptr->next=NULL;

if(HL==NULL)

HL=__________________________;

else{

LNode*P=HL;

While(P->next!

=NULL)

____________________;

p->next=newptr;

}

}

六、编写算法(共8分)

编写从类型为List的线性表L中将第i个元素删除的算法,(假定不需要对i的值进行有效性检查,也不用判别L是否为空表。

voidDelete(List&L,inti)

模拟试卷一参考答案

一、单选题(每题2分,共20分)

1.B2.D3.A4.B5.B6.C7.A8.C9.B10.B

二、填空题(每空1分,共26分)

1.顺序链表索引散列

2.O(n)O

(1)

3.p->next=HS;HS=pHS=HS->next

4.2i2i+1i/2(或i/2)

5.

图3

向上根

6.2.9

7.邻接矩阵邻接表边集数组

8.14

9.O(n)O(nlog2n)O(n)

10.m/2-1m-1m/2m

三、运算题(每题6分,共24分)

1.

(1)3X*Y2-/1+

(2)2XY3+*+

2.

(1)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

3

4

5

6

7

8

9

(2)见图3所示:

3.

(1)不是小根堆。

调整为:

{12,65,33,70,24,56,48,92,86,33}

(2)是小根堆。

4.普里姆算法从顶点1出发得到最小生成树为:

(1,2)3,(1,3)5,(1,4)8,(4,6)4,(2,5)10,(4,7)20

四、阅读算法(每题7分,共14分)

1.30241610210

2.该函数的功能是:

统计出BT所指向的二叉树的结点总数和叶子总数

五、算法填空(共8分,每一空2分)

newptr==NULLnewptr->=datanewptrp=p->next

六、编写算法(8分)

voidDelete(List&L,inti)

{

for(intj=i-1;j

L.list[j]=L.list[j+1];//第i个元素的下标为i-1

L.size--;

}

模拟试卷二

一、单选题(每题2分,共20分)

1.在一个带有附加表头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行()。

A.HL=p;p->next=HL;B.p->next=HL->next;HL->next=p;

C.p->next=HL;p=HL;D.p->next=HL;HL=p;

2.若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储()个元素.

A.n B.n-1

C.n+1D.不确定

3.下述哪一条是顺序存储方式的优点?

()

A.存储密度大B.插入和删除运算方便

C.获取符合某种条件的元素方便D.查找运算速度快

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?

(脚注(10)表示用10进制表示,m>3)

A.658B.648C.633D.653

5.下列关于二叉树遍历的叙述中,正确的是()。

A.若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点

B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点

C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点

D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点

6.k层二叉树的结点总数最多为().

A.2k-1B.2K+1C.2K-1   D.2k-1

7.对线性表进行二分法查找,其前提条件是(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1