数据结构本期末复习指导精心制作.docx
《数据结构本期末复习指导精心制作.docx》由会员分享,可在线阅读,更多相关《数据结构本期末复习指导精心制作.docx(77页珍藏版)》请在冰点文库上搜索。
![数据结构本期末复习指导精心制作.docx](https://file1.bingdoc.com/fileroot1/2023-6/11/fb84599a-c761-4b6f-8099-7d82f27eac77/fb84599a-c761-4b6f-8099-7d82f27eac771.gif)
数据结构本期末复习指导精心制作
数据结构(本)期末复习指导
第一部分课程考核说明
一、考核说明
数据结构(本)是中央广播电视大学计算机科学与技术(本科)专业的一门统设必修、学位课程。
4学分,72学时,其中实验24学时,开设一学期。
课程主要内容包括:
数据结构和算法的基本概念、线性表、栈和队列、串、数组和广义表、树和图、查找和排序等。
目的是使学生通过该课程的学习,深入地理解数据的逻辑结构和物理结构以及有关算法,掌握基本的程序设计技能,学会编制高效可靠的程序,为学习后续课程奠定基础。
现将有关考核的几个问题说明如下:
1.考核对象
2007年秋季起入学的计算机科学与技术专业(本科)学生。
2.考核依据
以数据结构(本)课程教学大纲为依据编制,考核说明是本课程形成性考核和终结性考试命题的基本依据。
3.考核方式
采用形成性考核和终结性考试相结合的方式。
4.课程总成绩的记分方法
课程总成绩按百分制记分,其中形成性考核所占的比例为30%,终结性考试占70%。
60分为合格,可以获得课程学分。
本课程的学位课程学分为70分,即课程总成绩达到70分及以上者有资格申请专业学位。
5.形成性考核的要求、形式及手段
形成性考核主要考核学生形成性作业和实验的完成情况,占课程总成绩的30%。
形成性考核以作业册的形式下发,由各地电大根据学生作业和实验的完成情况进行考核。
中央电大将不定期随机抽检各地电大学生的形成性作业及课程实验报告。
6.终结性考试的要求及方式
(1)考试要求
考核要求分为了解、理解和掌握三个层次:
了解:
是指
(1)学习本课程主干知识点所需要的概念、方法、预备知识和相关内容。
(2)就大部分学生目前的知识结构和基础理解和掌握有一定困难,有待今后进一步学习的内容。
(3)在主干知识点基础上拓展的内容。
这部分不属考核的主要内容。
理解:
是指要求学生准确全面领会的概念、方法和思路等。
相关内容是本课程的主干知识点,要求学生能融汇贯通,并能利用所学知识分析解决相关问题。
这部分是考核的主要范围。
掌握:
是指本课程最重要的知识点,能充分体现本课程的教学要求,要求学生在理解所学知识的基础上能灵活应用。
能结合课程的不同知识点解决综合性的问题和简单应用问题。
这部分是考核的重点内容。
(2)考核方式
中央电大统一命题,闭卷考试。
(3)组卷原则
在考核说明所规定的内容和要求之内命题。
在教学内容范围之内,按照理论联系实际原则,考察学生对所学知识应用能力的试题,不属于超纲。
试题的难易程度和题量适当,按难易程度分为易、中、难三个层次:
易占25%,中占45%,难占30%。
题量安排以大多数考生能在规定的考试时间内做完并有一定时间检查为原则。
(4)试题类型及试卷结构
试题题型有单项选择题、填空题、综合题和程序填空题四种题型。
试卷结构如下:
单项选择题:
每小题2分,共30分
填空题:
每小题2分,共24分
综合题:
每小题10分,共30分
程序填空题:
每空2分,共16分
共100分
(5)答题时限
答题时限为90分钟。
二、考核内容和要求
第1章绪论(2学时)
[考核知识点]
1.数据结构的基本概念
2.算法和算法分析的基本概念
[考核要求]
1.理解数据结构的基本概念
2.掌握逻辑结构、物理结构的概念及相互关系
3.掌握本书介绍的四种基本结构的特点
4.理解算法及其特性
5.了解算法分析的一般概念
第2章线性表(8学时)
[考核知识点]
1.线性表的定义、逻辑结构、顺序存储结构、链式存储结构
2.线性表在顺序结构和链式结构上的基本操作和应用
3.双向链表、循环链表的原理和相关操作
[考核要求]
1.理解线性表的定义及两种存储结构
2.理解线性表顺序存储的特点、实现方法和应用。
3.掌握顺序表的基本操作(包括建立链表、遍历链表、删除、插入、查找)和应用。
特别要求能够利用链表的操作和相关的程序设计技术编制有一定难度的程序。
4.了解双向链表、循环链表的原理和相关操作。
第3章栈和队列(6学时)
[考核知识点]
1.栈的定义、栈的存储结构(顺序存储、链式存储)和基本操作、栈的应用
2.队列的定义、队列的存储结构(顺序存储、链式存储)、队列的应用
3.循环队列的概念和实现方法
[考核要求]
1.掌握栈和队列的操作特点
2.理解顺序栈、顺序队列的基本操作
3.了解在实际编程中栈和队列的不同应用。
理解循环队列的概念、实现方法。
掌握循环队列判空、判满的条件
4.能按照后续章节(例如二叉树、排序等)的要求利用递归程序设计技术实现相关算法
第4章串(2学时)
[考核知识点]
1.串类型定义、C语言中字符串的特点和处理方法
2.串的顺序存储结构和链式存储结构
3.串的基本运算和实现方法
[考核要求]
1.理解串的定义和存储方法
2.了解串的基本操作和相关算法
3.掌握用C语言处理字符串的语法规则
第5章数组和广义表(2学时)
[考核知识点]
1.数组的定义和存储结构
2.特殊矩阵和稀疏矩阵的存储结构
3.广义表的定义和存储结构
[考核要求]
1.了解数组的存储结构。
2.掌握特殊矩阵进行压缩存储的下标转换公式。
3.理解稀疏矩阵的压缩存储原理。
4.掌握利用三元组表示稀疏矩阵的方法。
5.了解广义表的概念和存储结构。
第6章树和二叉树(10学时)
[考核知识点]
1.树的基本概念
2.二叉树的性质和存储结构
3.二叉树的遍历和线索二叉树
4.哈夫曼树及其应用
[考核要求]
1.了解树和二叉树的定义
2.掌握二叉树的基本性质,能利用相关性质解决简单计算问题
3.了解二叉树的顺序存储结构
4.掌握二叉树的链式存储结构、相关操作
5.掌握二叉树的有关算法并能编程实现
6.掌握利用遍历序历构造二叉树的规则和具体步骤
7.掌握哈夫曼树的定义、性质和构造方法
8.了解哈夫曼树的应用
第7章图(6学时)
[考核知识点]
1.图的基本概念
2.图的存储结构
3.图的遍历
4.最小生成树和最短路径。
[考核要求]
1.了解图的基本概念
2.掌握图的存储方法(邻接矩阵、邻接表)
3.掌握图的深度优先和广度优先遍历的规则和步骤
4.理解在连通图中求最小生成树的方法。
了解求图的最短路径等相关算法及其应用
第8章查找(6学时)
[考核知识点]
1.线性表的查找(顺序查找、折半查找、分块查找)。
2.二叉排序树的查找。
3.哈希表(哈希表的定义、哈希函数的构造、处理冲突的方法、哈希表的查找和分析)。
[考核要求]
1.了解查找的相关概念。
2.掌握顺序表的查找方法、步骤、程序实现、时间复杂度和平均查找长度。
3.掌握在有序的顺序表上进行折半查找的方法、步骤、程序实现。
4.掌握折半查找的判定树的构造方法。
能利用判定树求平均查找长度。
5.掌握二叉排序树的确切定义,掌握建立二叉排序树的步骤和方法。
理解在二叉排序树中进行输入、删除操作的规则。
6.了解哈希表的相关概念和原理,了解常用哈希函数的构造和处理冲突的方法。
理解哈希函数和哈希表的关系及在查找中的应用。
第9章排序(6学时)
[考核知识点]
1.插入排序(直接插入排序、希尔排序)
2.交换排序(冒泡排序、快速排序)
3.选择排序(简单选择排序、堆排序)
4.归并排序
[考核要求]
1.掌握教材中介绍的各种排序算法的基本原理、步骤。
2.能针对小规模具体实例,按相关排序算法的规则人工完成排序;能通过分析排序的中间结果判断所用的排序算法。
3.能正确理解相关排序算法的程序实例,并重点掌握算法中的关键步骤和关键语句。
4.掌握堆和特殊的完全二叉树的对应关系。
掌握建堆、筛选算法和完全二叉树相关操作的对应关系。
三、试题类型及答案
一、单项选择题(每小题2分,共30分)
1.数据结构中,与所使用的计算机无关的是数据的()结构。
A.逻辑B.物理C.存储D.逻辑与物理
2.下述各类表中可以随机访问的是()。
A.单向链表B.双向链表C.单向循环链表D.顺序表
3.在一个长度为n的顺序表中为了删除第5个元素,从前到后依次移动了15个元素。
则原顺序表的长度为()。
A.21B.20C.19D.25
4.元素2,4,6按顺序依次进栈,则该栈的不可能的输出序列是()。
A.642B.624C.426D.264
5.一个队列的入队序列是5,6,7,8,则队列的输出序列是()。
A.5678B.8765
C.7865D.可能有多种情况
6.串函数StrCmp(“d”,“D”)的值为()。
A.0B.1C.-1D.3
7.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。
A.p=q->nextB.p->next=qC.p->next=q->nextD.q->next=NULL
8.设一棵哈夫曼树共有n个非叶结点,则该树一共有()个结点。
A.2*n-1B.2*n+1C.2*nD.2*(n-1)
9.对如图1所示二叉树进行中序遍历,结果是()。
A.dfebagcB.defbagcC.defbacgD.dbaefcg
10.任何一个无向连通图的最小生成树()。
A.至少有一棵B.只有一棵C.一定有多棵D.可能不存在
11.设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素A8,5在一维数组B中的下标是()。
A.33B.32C.85D.41
12.一组记录的关键字序列为(37,70,47,29,31,85),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。
A.31,29,37,85,47,70B.29,31,37,47,70,85
C.31,29,37,70,47,85D.31,29,37,47,70,85
13.对n个元素进行冒泡排序,要求按升序排列,程序中设定某一趟冒泡没有出现元素交换,就结束排序过程。
对某n个元素的排序共进行了3n-6次元素间的比较就完成了排序,则()。
A.原序列是升序排列
B.原序列是降序排列
C.对序列只进行了2趟冒泡
D.对序列只进行了3趟冒泡
14.在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行()。
A.x=top->data;top=top->next;B.top=top->next;x=top;
C.x=top;top=top->next;D.x=top->data;
15.串函数StrCat(a,b)的功能是进行串()。
A.比较B.复制C.赋值D.连接
二、填空题(每小题2分,共24分)
1.在一个单向链表中p所指结点之后插入一个s所指的新结点,应执行s->next=p->next;和______操作。
2.根据数据元素间关系的不同特性,通常可分为________、、、四类基本结构。
3.在一个链队中,设f和r分别为队头和队尾指针,则删除一个结点的操作为________。
(结点的指针域为next)
4.________遍历二叉排序树可得到一个有序序列。
5.一棵有2n-1个结点的二叉树,其每一个非叶结点的度数都为2,则该树共有_______个叶结点。
6.如图1所示的二叉树,其中序遍历序列为_________。
图1
7.对稀疏矩阵进行压缩存储,矩阵中每个非零元素所对应的三元组包括该元素的________、________和________三项信息。
8.有一个有序表{2,3,9,13,33,42,45,63,74,77,82,95,110},用折半查找法查找值为82的结点,经________次比较后查找成功。
9.图的深度优先搜索和广度优先搜索序列不是唯一的。
此断言是______的。
(回答正确或不正确)
10.哈希法既是一种存储方法,又是一种。
11.44.在对一组记录(55,39,97,22,16,73,65,47,88)进行直接插入排序时,当把第7个记录65插入到有序表时,为寻找插入位置需比较_________次。
12.栈和队列的操作特点分别是________和________。
三、综合题(每小题10分,共30分)
1.已知序列{11,19,5,4,7,13,2,10},
(1)试给出用归并排序法对该序列作升序排序时的每一趟的结果。
(2)对上述序列用堆排序的方法建立初始堆(要求小根堆,以二叉树描述建堆过程)。
2.设有序表为(13,19,25,36,48,51,63,84,91,116,135,200),元素的下标依次为1,2,……,12.
(1)说出有哪几个元素需要经过3次元素间的比较才能成功查到
(2)画出对上述有序表进行折半查找所对应的判定树(树结点用下标表示)
(3)设查找元素5,需要进行多少次元素间的比较才能确定不能查到.
3.
(1)设有查找表{5,14,2,6,18,7,4,16,3},依次取表中数据,构造一棵二叉排序树.
(2)说明如何通过序列的二叉排序树得到相应序列的排序结果,对上述二叉排序给出中序遍历的结果.
四、程序填空题(每空2分,共16分)
1.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行冒泡排序,完成程序中的空格部分,其中n是元素个数,程序按升序排列。
Voidbsort(NODEa[],int)
{NODEtemp;
inti,j,flag;
for(j=1;
(1);j++);
{flag=0;
for(i=1;
(2);i++)
if(a[i].key>a[i+1].key)
{flag=1;
temp=a[i];
(3);
(4);
}
if(flag==0)break;
}
}
程序中flag的功能是(5)
7.以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域为data,其数据类型为字符型,BT指向根结点)。
VoidPostorder(structBTreeNode*BT)
{if(BT!
=NULL){
(1);
(2);
(3);
}
}
试题答案;
一、单项选择题(每小题2分,共30分)
1.A2.D3.B4.B5.A6.C7.C8.B9.A10.A
11.A12.D13.D14.A15.D
二、填空题(每小题2分,共24分)
1.p->next=s;
2.集合、线性、树形、图状
3.f=f->next;
4.中序
5.n
6.dgbaechhif
7.行号、列号、元素值
8.4次
9.正确
10.查找方法
11.3次
12.先进后出先进先出
三、综合题(每小题10分,共30分)
1.
(1)初始11,19,5,4,7,13,2,10
第一趟[11,19][4,5][7,13][2,10]
第二趟[4,5,11,19][2,7,10,,13]
第三趟[2,4,5,7,10,11,13,19]
(2)
2.
(1)13,36,63,135
(2)
(3)3次
3.
(1)
(2)中序遍历
中序2,3,4,5,6,7,14,16,18
四、程序填空题(每空2分,共16分)
1.
(1)j<=n-1
(2)i<=n-j
(3)a[i]=a[i+1]
(4)a[i+1]=temp
(5)当某趟冒泡中没有出现交换则已排好序,结束循环
2.
(1)Postorder(BTleft)
(2)Postorder(BTright)
(3)printf(“%c”,BTdata)
第二部分期末综合练习题
一、单项选择题(每小题2分)
1.针对线性表,在存储后如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。
A.单链表B.双链表C.顺序表D.单循环链表
2.带头结点的单向链表为空的判断条件是()(设头指针为head)。
A.head==NULLB.head!
=NULL
C.head->next==headD.head->next==NULL
3.链表所具备的特点是()。
A.可以随机访问任一结点B.占用连续的存储空间
C.插入删除元素的操作不需要移动元素结点D.可以通过下标对链表进行直接访问
4.非空的单向循环链表的尾结点满足()(设头指针为head,指针p指向尾结点)。
A.p->next==NULLB.p==NULLC.p==headD.p->next==head
5.数据结构中,与所使用的计算机无关的是数据的()结构。
A.物理B.逻辑C.存储D.逻辑与物理
6.算法的时间复杂度与()有关。
A.所使用的计算机B.计算机的操作系统
C.算法本身D.数据结构
7.设有一个长度为n的顺序表,要在第i个元素之前插入一个元素(也就是插入元素作为新表的第i个元素),则移动元素个数为()。
A.n-i+1B.n-iC.n-i-1D.i
8.设有一个长度为n的顺序表,要删除第i个元素需移动元素的个数为()。
A.n-i+1B.n-iC.n-i-1D.i
9.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用的语句是()。
A.p=q->nextB.p->next=qC.q->next=NULLD.p->next=q->next
10.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。
A.p=snextB.pnext=snext;
C.snext=pnext;pnext=s;D.pnext=s;snext=pnext
11.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的植,则执行()。
A.x=top->data;top=topnext;B.x=top->data;
C.top=top->next;x=top->data;D.top=top->next;x=data;
12.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。
A.r=fnext;B.r=rnext;C.f=fnext;D.f=rnext;
13.在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算为()。
A.f->next=s;f=s;B.s->next=r;r=s;C.r->next=s;r=s;D.s->next=f;f=s;
14.元素1,3,5,7按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈可以交替进行)。
A.7,5,3,1B.7,5,1,3
C.3,1,7,5D.1,3,5,7
15.设有一个18阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素a10,8在一维数组B中的下标是()。
A.18B.45C.53D.58
16.在C语言中,顺序存储长度为3的字符串,需要占用()个字节。
A.4B.3C.6D.12
17.一棵有n个结点采用链式存储的二叉树中,共有()个指针域为空。
A.nB.n+1C.n-1D.n-2
18.在一棵二叉树中,若编号为i的结点存在左孩子,则左孩子的顺序编号为()。
A.2iB.2i-1C.2i+1D.2i+2
19.设一棵哈夫曼树共有n个叶结点,则该树有()个非叶结点。
A.nB.2nC.n-1D.n+1
20.一棵具有35个结点的完全二叉树,最后一层有()个结点。
A.4B.6C.16D.8
21.一棵完全二叉树共有5层,且第5层上有六个结点,该树共有()个结点。
A.30B.20C.21D.23
22.在一个无向图中,所有顶点的度数之和等于边数的()倍。
A.3B.2C.2.5D.1.5
23.已知如图1所示的一个图,若从顶点a出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.abecdfB.acfebdC.aedfcbD.aebcfd
图1
24.已知如图3所示的一个图,若从顶点V1出发,按广度优先法进行遍历,则可能得到的一种顶点序列为()。
A.V1V2V4V8V5V3V6V7B.V1V2V4V5V8V3V6V7
C.V1V2V4V8V3V5V6V7D.V1V3V6V7V2V4V5V8
图3
25.在有序表{1,3,8,13,33,42,46,63,76,78,86,97,100}中,用折半查找值86时,经()次比较后查找成功。
A.3B.4C.6D.8
26.对二叉排序树进行()遍历,可以使遍历所得到的序列是有序序列。
A.按层次B.后序C.中序D.前序
27.有一个长度为12的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。
A.37/12B.39/12C.41/12D.35/12
28.设已有m个元素有序,在未排好序的序列中挑选第m+1个元素,并且只经过一次元素的交换就使第m+1个元素排序到位,该方法是()。
A.折半排序B.冒泡排序C.归并排序D.简单选择排序
29.一组记录的关键字序列为(46,79,56,38,40,84),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为()。
A.40,38,46,79,56,84B.40,38,46,84,56,79
C.40,38,46,56,79,84D.38,40,46,56,79,84
30.一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为()。
A.39,47,46,80,41,57B.39,41,46,80,47,57
C.41,39,46,47,57,80D.39,80,46,47,41,57
二.填空题
1.把数据存储到计算机中,并具体体现数据之间的逻辑结构称为________结构。
2.算法的5个特征为_________。
3.结构中的数据元素存在的关系称为树形结构。
4.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数和算法的时间复杂度分别为________和________。
5