数据结构复习C学生_第1页
数据结构复习C学生_第2页
数据结构复习C学生_第3页
数据结构复习C学生_第4页
数据结构复习C学生_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构(C+版)复习要点考试说明:考试时间为120分钟,总分100分。考试题型为:一、单选题:(每小题1分,本大题共10分)二、填空题:(每空2分,本大题共20分)三、简答题:(每小题5分,本大题共50分)四、算法设计题:(每小题10分,本大题共20分)第一章 绪论本章主要介绍了一些基本概念。对于本章内容的掌握主要以概念为主。主要知识要点1、理解数据、数据元素、数据项、数据对象、数据类型、数据结构的概念。2、掌握如何用二元组来表示一个数据结构。掌握数据的四类基本逻辑结构(集合、线性结构、树型结构、图状或网状结构)。3、理解顺序存储方法和链式存储方法是怎样存储数据的。4、时间复杂度和空间复杂度

2、(给程序能写出复杂度),常用操作的时间复杂度。例题:1. 设某数据结构的二元组形式表示为A=(D,R),D=01,02,03,04,05,06,07,08,09,R=r,r=<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>,则数据结构A是( D )。A 线性结构B. 树型结构C. 物理结构D. 图型结构2. 下面程序的时间复杂为( B )for(i=1,s=0; i<=n; i+) t=1;for(j=1;j<

3、=i;j+) t=t*j;s=s+t;A. O(n) B. O(n2) C. O(n3) D. O(n4)3. 数据的物理结构主要包括_顺序_和_链式_两种情况。4. 下面程序段的时间复杂度是 i=s=0; while(s<n) i+; s+=i; 第一次执行完s+=i, s = 1第二次 s = 3 = 1+2第三次 s = 6 = 1+2+3第四次 s = 10 = 1+2+3+4第k次 s=1+2+3+4+.+k = k*(k+1)/2那么当k*(k+1)/2 >=n 的时候停止,即k =关于n的表达式是根号的, n1/2第二章线性表本章主要介绍了线性表的定义、存储方式的描述

4、和基本运算以及实现算法。要求掌握并能灵活应用概念及性质。 主要知识要点1、掌握线性表定义、逻辑特性、空表、文件、前驱元素、后继元素的概念。2、掌握顺序存储及顺序表的定义。掌握顺序存储结构的优缺点,插入删除操作算法。数据元素的存储位置取决于第一个数据元素的存储位置LOC(ai) = LOC(a1) + (i-1)×C3、掌握线性链表的定义。掌握链式存储结构的优缺点,单链表插入删除操作算法,单链表、双向循环链表的插入与删除操作,头结点的作用,单链表的判空条件。4、掌握静态链表的概念。例题1、顺序表中逻辑上相邻的元素的物理位置( 一定 )相邻。单链表中逻辑上相邻的元素的物理位置( 不一定

5、)相邻。 2、线性表的顺序存储、链式存储有哪些特点?3、线性表的两种存储结构其中( 顺序)存储密度较大;( 顺序)存储利用率较高;( 顺序)可以随机存取;(链式 )不可以随机存取;( 链式)插入和删除操作比较方便。4、 设指针变量p指向单链表中结点A前驱,若删除单链表中结点A,则需要修改指针的操作序列为( C )。 A. q=p->next;p->data=q->data;p->next=q->next;free(q);B. q=p->next;q->data=p->data;p->next=q->next;free(q);C. q=

6、p->next;p->next=q->next;free(q);D. q=p->next;p->data=q->data;free(q);5、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( B )Ahead=NULL Bhead->next=NULL Chead->next=head Dhead!=NULL6、在一个单链表中,已知q所指结点是p所指结点的前趋结点,若在q和p之间插入S结点,则执行( C )。A. S->next=p->next; p->next=S; Bp->next=S->ne

7、xt; S->next=p;C. q->next=S; S->next=p; D. p->next=S; S->next=q;7、在一个长度为n的向量中删除第i个元素(1<=i<=n)时,须向前移动( n-i )个元素。8、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表9、编写算法实现顺序表的就地逆置,即要求利用原顺序表的存储单元,把数据元素序列(a0,a1,an1)逆置为(an1,a1,a0)。10、设计在单链表中删

8、除具有某种特性的结点的算法。11、在如下数组A中链接存储了一个线性表,表头指针为A0.next,试写出该线性表。 A01234567data605078903440next357204112、设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_个数据元素;删除第i个位置上的数据元素需要移动表中_个元素。栈和队列本章主要介绍了栈和队列的定义、性质及对栈和队列进行操作的特殊性。要求掌握并能灵活应用概念及性质。主要知识要点1、掌握栈的概念、特点:栈顶、栈底、进栈及出栈。掌握顺序栈/链栈的基本运算:初始化、入栈、出栈、取栈顶和判空,栈的入栈和出栈的前提条件(判空和判满)2、掌握队

9、列的概念、特点,掌握循环队列/链队列队列的基本运算:初始化、入队、出队、取队头顶和判空。 入队和出队的前提条件(判空和判满)顺序循环队列的front和rear指针的变化规律(出队front+1,入队rear+1)、求队列长度链队列的基本操作:插入、删除、访问、查找、求队列长度3、栈和队列特点的比较,通过给出进入栈或者队列的元素序列,能够求出栈或者队列元素的序列。4、栈和队列的应用举例,应用栈和队列的求解问题(如进制转换、判断括号匹配、)。例题1、栈是仅在( 表一端)进行插入删除操作的线性表。允许插入删除的一端为(栈顶 ),另一端为( 栈底)。2、栈有两种存储表示方法:( 顺序栈)和( 链栈)。

10、3、链栈在进行出栈操作时首先要判断( 栈是否为空 )。4、栈和队列的逻辑结构都是( 线性表)。5、一个栈的输入序列为1 2 3 4 5,则下列序列中是栈的输出序列的是( A )。 A2 3 4 1 5 B. 5 4 1 3 2 C. 3 1 2 4 5 D. 1 4 2 5 36、一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是(B )a、23415 b、54132 c、23145 d、154327、 假设以数组Am存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为( A )。A(rear-front+m)%m Brear-front+1 C(

11、front-rear+m)%m D(rear-front)%m串本章主要介绍了串的定义、串的几种存储方法,串的基本运算及实现方法。掌握串的概念及性质。主要知识要点1、掌握串的定义,存储方法,空串与空格串区别、子串、主串。2、如何判断两个串是否相等。3、掌握串有静态和动态两种存储结构方法。4、掌握串有哪些基本运算(串连接、串复制、串求长度函数)例题1、串是( )。2、空串是指( )。3、如何判断一个串是另外一个串的子串。4、如何判断两个串相等。5、串有哪两种存储方式(顺序和链式)。6、串的长度是指(串中字符的个数)。7、空串与空格串的区别是什么?8、设串s1=ABCDEFG,s2=PQRST,函

12、数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2), subs(s1, len(s2), 2)的结果串是:( D )A)BCDEF B) BCDEFG C) BCPQRSTD) BCDEFEF数组和广义表本章主要介绍了数组的定义及基本运算,数组的存储结构及特殊矩阵的压缩存储,广义表的概念、基本运算及存储结构。通过本章内容的学习能够解决具体的问题。主要知识要点1、掌握数组的定义、性质及数组的基本操作有哪些 。 2、理解数据的顺序存储的含义,矩阵的顺序存储表示。3

13、、掌握LOCi,j=LOC0,0+(b2*i+j)*L 。按行或列优先进行存储时,数组下标和元素存储地址的关系公式4、n阶对称矩阵、上/下三角矩阵、对角线矩阵的压缩存储的公式(见课件),稀疏矩阵的存储方法(三元组)、矩阵的转置方法5、掌握广义表的定义、如何求广义表的深度、长度、表头、表尾及如何利用函数HEAD和TAIL来取出广义表内的某个元素的内容;画出广义表的头尾链表存储结构。例题1、已知一个6´6稀疏矩阵如下所示,写出它的三元组线性表;2、已知一维数组采用顺序存储结构,每个元素占个存储单元,如果第一个元素的地址为100,则A10的地址是( 10×4+100=140 )

14、;如果第九个元素的地址为144,则该数组的首地址是( 144-9×4=108 )。 3、二维数组A1020采用行序为主方式存储,每个元素占一个存储单元,并且A00的存储地址为200,则A612的地址为( (5×20+12)×1+200 )。4、n阶对称矩阵压缩存储在一维数组中,数组的下标范围是( 0 . n(n-1)/2-1 )。5、把对称矩阵1.5,1.5 压缩存储在一维数组M1.15中,元素A4,3存储在M中的下标是( (1+2+3+3)=9 )。 4 3 9 126、取出广义表:LS=(a,b,(c,d,e),(f,g)元素c的操作是(H(H(T(T(s)

15、)。7、已知广义表LS(a,b,c),(d,e,f),运用head和tail函数取出LS中原子e的运算是( A )。A. head(tail(head(tail(LS) B. tail(head(LS)C. head(tail(tail(head(LS) D. head(tail(LS)第四章 树本章主要介绍了树、二叉树的定义、性质、存储结构及其各种操作,树和森林与二叉树之间的转换关系。通过本章的学习学生要能完成相关的题目。主要知识要点1、掌握树及其相关的基本概念特点(叶子结点、父结点、树的度、树的深度、结点的度等)2、掌握二叉树的概念(叶子结点,父结点,树的度,结点的度等)、满二叉树和完全二

16、叉树的概念(要会判断)、线索二叉树、二叉树的性质(5个性质,会简单应用)。完全二叉树的性质。3、树和二叉树的存储表示,树的物理存储(双亲、孩子、二叉链表)。4、掌握二叉树、树和森林前序(根)遍历、中序遍历(树没有)及后序(根)遍历的方法。给出一个树的先序遍历和中序遍历或后序遍历和中序遍历的序列可以唯一确定一颗二叉树,要会画。给出一个树的先序遍历和后序遍历的序列不能唯一确定一颗二叉树。5、树、森林与二叉树相互转换以及特点,一棵树转换为二叉树后其二叉存储链表的表示。6、哈夫曼树及性质,构造方法、求哈夫曼编码、带权路径长度WPL的计算。 例题1、树、子树的概念是什么。树的表示方法有( )、( )、(

17、 )。2、二叉树是( )。满二叉树是指( )完全二叉树是指( )。3、有个结点的完全二叉树,对任意结点i(1<i<=n),其父结点是( 3 )。 2 ëi/2û i 4、有N个节点的二叉树,其高度为多少?解:最大为N(每个节点就只有一棵子树的时候),最小为log2N(最小是完全二叉树的时候),其他情况的都是在这两种之间,不大于最大不小于最小。5、对于有n 个结点的完全二叉树, 其高度为多少。解:假设该完全二叉树的深度为 k,则根据完全二叉树的定义和性质 2有: 2k-11 n 2k 或 2k-1 n 2k 所以有:k1 log2nk,又因为 k是整数,所以,k

18、ëlog2nû +1(向下取整)6、设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是( )。A.N0=N1+1 B.N0=Nl+N2 C.N0=N2+1 D.N0=2N1+l7、设一棵完全二叉树共有2016个结点,1)在该二叉树中的叶子结点数为_1008_;2)该二叉树的深度为_10_;3)若用二叉链表作为该完全二叉树的存储结构,则共有_2015_个空指针域。解:1)性质1:在二叉树的第i层上的结点数2i-1(i>0)性质2:深度为k的二叉树的结点数2k-1=1+2+4+2(k-1)(k>0)( a1=1,q

19、=2,Sn=a1(1-qn)/(1-q)=2n-1 )完全二叉树第i层至多有2i-1个节点,共i层的完全二叉树最多有2i-1个节点。设n0是度为0的结点数(叶子结点),n1是度为1的结点数,n2是度为2的结点数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n11,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,n0=2016/2=10082)共2016个节点,因为是完全二叉树,211-1>2016>210-1,所以高度为11,可以确定1到10层全满,

20、节点总算为210-1=1023,剩下的20161023993个肯定为叶子节点。第11层上的993个节点挂在第10层的993/2=496.5=497个节点上,第10层剩下的210-1-496=512-497=15个也为叶子节点,最后总共993+15=1008个叶子节点!3)用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。)即有后继链接的指针仅n-1个。如果利用二叉链表存储树,则根结点的右指针是( 空 )。8、已知一棵二叉树的后序遍历次序为cedbhjigfa,中

21、序遍历次序为 cbedahgijf,请画出对应的二叉树,并转换为对应的森林。9、有一份电文中共使用6个字符:A、B、C、D、E、F, 它们出现的次数依次为20、12、23、14、6、10,要求左子树的权值小于右子树的权值,试画出对应的哈夫曼树,并求出每个字符的哈夫曼编码。12、根据下面给定的几个数(7,19,2,6,32,3,21,10)构造一棵赫夫曼树,要求左子树的权值小于右子树的权值,并求出其带权路径长度。(给出具体过程)10、将下图的森林转换成对应的二叉树。11、该算法的功能是:void ABC(BTNode * BT) if BT ABC (BT->left); ABC (BT-

22、>right); cout<<BT->data<<' ' 12、设前序遍历某二叉树的序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为_。第五章 图本章主要介绍了图的基本概念,图的存储结构,有关图的一些基本算法,图的应用中的最小生成树、最短路径、关键路径。 通过本章内容的学习能够解决具体的问题。主要知识要点1、掌握图及有关概念:完全图、有向完全图、简单图、连通图、连通图(最多n*n条边,最少n条边)、非连通图、连通分量和强连通分量、极小连通子图、无向图顶点和边的数量之间的关系(最多有n*(n-1)/2条边)(多对多结

23、构)2、图的基本性质:顶点的度(无向图、有向图分为入度和出度)3、图的存储表示:邻接矩阵、邻接表(分为有向图、无向图) 有向图的邻接矩阵不对称,无向图的邻接矩阵是对称的,4、掌握深度优先搜索、广度优先搜索的方法。 能将实际问题画成图,并画出该图的存储表示形式,并写出其遍历的序列(深度和广度)图遍历的应用(如判断图的连通性、求结点的度)5、图的生成树(包含n个顶点和n-1条边)最小生成树,普里姆和克鲁斯卡尔方法来产生最小生成树。6、掌握拓扑排序的概念 、掌握关键路径的概念。 AOV网中,结点和边表示什么含义(边表示优先关系,顶点表示活动)。AOE网中, 结点和边表示什么含义(边表示活动,顶点表示

24、事件)。7、掌握最短路径的求法(迪杰斯特拉、弗洛伊德)。例题1、设有向图G中有向边的集合E=<1,2>,<2,3>,<1,4>,<4,2>,<4,3>,则该图的一种拓扑序列为_。2、已知一个图的顶点集V和边集E分别为:V=1,2,3,4,5,6,7;E=<2,1>,<3,2>,<3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>若存储它采用邻接表,并且

25、每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,按教材中介绍的拓扑排序算法进行排序,试给出得到的拓扑排序的序列。3、某田径赛中各选手的参赛项目表如下: 姓名 参 赛 项 目 ZHANG A B E WANG C D LI C E F ZHAO D F A ZHOU B F设项目A ,B ,,F各表示一数据元素,若两项目不能同时举行,则将其连线(约束条件)。(1)根据此表及约束条件画出相应的图状结构模型,画出此图的邻接表结构;(2)写出从元素A出发按“广度优先搜索”算法和“深度优先搜索”算法遍历此图的元素序列。画出图的深度优先生成树和广度优先生成树。4、对于下图所示的有向图若存储它

26、采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,试写出:ABCDEF(1) 从顶点A出发进行深度优先搜索所得到的深度优先生成树;(2) 从顶点B出发进行广度优先搜索所得到的广度优先生成树;5、试利用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,写出执行算法过程中各步的状态。解:最短路径为:(a,c,f,e,d,g,b)6、( )的邻接矩阵是对称矩阵。A有向图 B无向图 CAOV网 DAOE网7、设无向图的顶点个数为n,则该图最多有( )条边。An-1 Bn(n-1)/2 C n(n+1)/2 D0 8、画出下面的有向图的邻接矩阵,并给出每个结点的入度

27、和出度。9、采用普里姆算法从顶点1开始求出下图的最小生成树(给出具体过程)。20252315181047125671652431110、试写出用克鲁斯卡尔算法构造下图的一棵最小生成树的过程。11、什么叫关键路径?关键路径是事件结点网络中( )。A从源点到汇点的最长路径 B从源点到汇点的最短路径C最长回路 D最短回路第六章 查找本章主要介绍了查找的基本概念,线性表的查找方法,树表的查找方法,哈西表的查找方法。通过本章内容的学习能够解决具体的问题。主要知识要点1、掌握查找的基本概念及其相关概念,关键字(主、次)。 2、掌握静态查找表的定义,顺序表查找方法、哨兵位的作用、折半查找的方法(查找次数,包

28、括查找成功和查找不成功的次数计算)索引查找方法以及三种查找方法适用的情况。3、掌握动态查找表的概念,二叉查找树,平衡因子的定义、平衡二叉树的构造(平衡旋转技术)。4、哈希表的特点(希望能够使得查找与存储位置无关),哈希表的构造(哈希函数的构造原则、k mod m m的选取法、除留余数法)、解决冲突的方法(线性探测再散列、二次探测、双探测、链地址法解决冲突)。例题1、己知有序表为(10,20,30,40,50,60,70,80,90,100)当用二分(折半)法查找80时,需( 2 )次查找成功,查40时( 3 )次成功,查89时,需( 4 )次才能确定不成功。2、设二叉排序树中有n个结点,则在二

29、叉排序树的平均查找长度为( B )。A.O(1) B.O(log2n) C.O(n) D.O(n2)4、采用平衡旋转技术,使初始序列(33,22,11,55,44)构成的二叉树成为平衡二叉树(画出变化过程)。6、下列算法实现在二叉排序树上查找关键值k,请在下划线处填上正确的语句。typedef struct node int key; struct node *lchild; struct node *rchild; bitree;bitree *bstsearch(bitree *t, int k) if (t=0 ) return(0);else while (t!=0)if (t->

30、;key=k)_return(t)_; else if (t->key>k) t=t->lchild; else_ t=t->rchild _;7、设计在顺序有序表中实现二分查找的算法。3、设一组初始记录关键字集合为(25,10,8,27,32,68),散列表的长度为8,散列函数H(k)=k mod 7,要求分别用线性探测作为解决冲突的方法设计哈希表。8、从空树起,依次插入关键字40,8,90,15,62,95,12,23,构造一棵二叉排序树。 (1)画出该二叉排序树;(2)求该二叉树的平均查找长度。9、设有一组关键字10,01,43,14,55, 25, 88, 68,54 ,19,63,采用哈希函数:H(key)=key%11,并采用开放定址法的线性探测再散列方法解决冲突,试在0-12的散列地址空间中对该关键字序列构造哈希表。10、设散列表的长度为13,散列函数为H(k) = k % 13,给定的关键码序列为19, 14, 23, 01, 68, 20, 84, 27。试给出用双探查法解决冲突时所构成的散列表。H=(h(key)+h1(key))%m第七章 排序本章主要介绍的是几种内部排序方法:插入排序、选择排序、交换排序、归并排序、基数排序的基本思想和步骤。 能够灵活应用本章所讲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论