C题库期末复习_第1页
C题库期末复习_第2页
C题库期末复习_第3页
C题库期末复习_第4页
C题库期末复习_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

期末复习第一章绪论数据结构的基本概念和术语数据、数据元素、数据项、数据对象、数据结构等基本概念数据结构的逻辑结构,存储结构及数据运算的含义及其相互关系数据结构的四种逻辑结构及四种常用的存储表示方法抽象数据类型的概念及其与数据结构的关系算法的描述和分析算法、算法的时间复杂度和空间复杂度的概念算法描述和算法分析的方法第二章线性表线性表的逻辑结构线性表的逻辑结构特征线性表上定义的基本运算,并能利用基本运算构造出较复杂的运算线性表的顺序存储结构顺序表的存储方式及它如何映射线性表中元素之间的逻辑关系顺序表的存储结构定义线性表基本运算在顺序表上的实现方法及其时间性能分析利用顺序表设计算法解决应用问题设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。解题思路:在递增有序的顺序表中插入一个元素x,首先应查找待插入元素的位置。因顺序表元素递增有序,采用折半查找法比顺序查找效率要高。查到插入位置后,从此位置直到线性表尾依次向后移动一个元素位置,之后将元素x插入即可。假设顺序表va存放在数组A[]中(假设下标从1开始)。voidInsert(ElemTypeA[],intsize,ElemTypex)。

{low=1;high=num;//假设下标从1开始

while(low<=high)∥对分查找元素x的插入位置。

{mid=(low+high)/2;

if(A[mid]==x){low=mid+1;break;}

else

if(A[mid]>x)high=mid-1;elselow=mid+1;

}

for(i=num;i>=low;i--)A[i+1]=A[i];∥元素后移。

A[i+1]=x;∥将元素x插入。

}算法结束线性表的链式存储结构链表的存储方式及它如何映射线性表中元素之间的逻辑关系链表中头指针和头节点的使用单链表、双链表、循环链表在链接方式上的区别各种链表的存储结构定义线性表基本运算在链表上的实现方法及其时间性能分析循环链表上尾指针取代头指针的作用利用链表设计算法解决简单的应用问题已知线性表中的元素以值递增有序排列,并以单链表(带头结点)作为存储结构,试写一算法删除表中所有值大于mink且小于maxk的元素。

解题思路:首先找到最后一个元素值小于等于mink的结点位置(q);再往后依次删除结点直到第一个值大于等于maxk结点为止。voiddelete(sqlist*la,intmink,intmark){sqlist*p,*q,;

q=la;

p=la->next;

while(p&&p->data<=mink)

{q=p;p=p->next;}

while(p&&p->data<maxk)

{u=p;p=p->next;free(p);}

q->next=p;}写出单链表(带头结点)就地逆置算法。voidreverse(linklist*h){linklistp,q;p=h->next;h->next=NULL;while(p!=null){q=p;//q指向当前结点p=p->next;//p指向下一个结点q->next=h->next;//将*q插入到*h之后h->next=q;}}顺序表和链表的比较顺序表和链表的主要优缺点根据应用问题的时空要求,为线性表选择合理的存储结构第三章栈与队列栈的逻辑结构,存储结构及其相关算法栈的逻辑结构特点,栈与线性表的关系顺序栈和链栈的存储结构定义顺序栈和链栈上进栈、退栈等基本运算的实现方法栈上的“上溢”和“下溢”的概念及其判别条件递归过程中栈的作用设计递归程序的原则和方法利用栈设计算法解决简单的应用问题假设以S和X分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S和X组成的序列表示(如SXSX)。(1)试指出判别给定序列是否合法的一般规则。(2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列?如能得到,请举列说明。

(1)通常有两条规则。第一是给定序列中S的个数和X的个数相等;第二是从给定序列的开始,到给定序列中的任一位置,S的个数要大于或等于X的个数。(2)可以得到相同的输出元素序列。例如,输入元素为A,B,C,则两个输入的合法序列ABC和BAC均可得到输出元素序列ABC。对于合法序列ABC,我们使用本题约定的S×S×S×操作序列;对于合法序列BAC,我们使用SS××S×操作序列。试证明:若借助栈由输入序列1,2,…,n得到输出序列为P1,P2,…,Pn(它是输入序列的一个排列),则在输出序列中不可能出现这样的情形:存在着i<j<k,使Pj<Pk<Pi。

如果i<j,则对于pi<pj情况,说明pi在pj入栈前先出栈。而对于pi>pj的情况,则说明要将pj压到pi之上,也就是在pj出栈之后pi才能出栈。这就说明,对于i<j<k,不可能出现pj<pk<pi的输出序列。换句话说,对于输入序列1,2,3,不可能出现3,1,2的输出序列。队列的逻辑结构,存储结构及其相关算法队列的逻辑结构特点,队列与线性表的关系顺序队列和链队列的存储结构定义(PASCAL语言的类型描述)顺序队列(主要是循环队列)和链队列上入队、出队等基本运算的实现方法队列的“上溢”和“下溢”的概念及其判别条件循环队列取代普通的顺序队列的原因利用队列设计算法解决简单的应用问题在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程(算法)。

voidEnQueue(LinkedListrear,ElemTypex){s=(LinkedList)malloc(sizeof(LNode));//申请结点空间

s->data=x;s->next=rear->next;//将s结点链入队尾

rear->next=s;rear=s;//rear指向新队尾}voidDeQueue(LinkedListrear){if(rear->next==rear){printf(“队空\n”);exit(0);}s=rear->next->next;//s指向队头

rear->next->next=s->next;//队头出队。

printf(“出队元素是”,s->data);

if(s==rear)rear=rear->next;//空队列

free(s);}第四章串串及其运算串的概念及其与线性表的关系串上定义的基本运算,并能利用基本运算构造出较复杂的运算串的存储结构和基本运算的实现串的两种主要存储结构—顺序串和链串的存储结构定义(C语言的类型描述)顺序串上串的基本运算的实现朴素的模式匹配算法与KMP算法的算法思想及时间复杂度分析KMP算法中next和nextval数组的求值方法

求模式串t1=‘aaab’,t2=‘abcabaa’,t3=‘adabbadada’的next和nextval数组值第六章树树的概念树的逻辑结构特征树的常用术语及含义二叉树二叉树的定义,二叉树与树的差别完全二叉树和满二叉树的概念二叉树的性质二叉树的顺序存储结构和链式存储结构的定义(C语言的类型描述)和表示方法二叉树的遍历二叉树的先序、中序、后序、层序遍历算法求给定二叉树的先序、中序、后序遍历对应的结点访问序列由二叉树的先序和中序、中序和后序、中序和层序的序列确定二叉树以遍历算法为基础,设计有关算法解决简单的应用问题线索二叉树二叉树线索化的目的线索二叉树存储结构的表示方法在线索二叉树中查找给定结点的前趋和后继的方法树和森林树和森林与二叉树之间的转换方法和对应关系树的各种存储结构的表示方法及其特点树的先序和后序遍历方法森林的先序和中序遍历方法哈夫曼树及其应用最优二叉树的概念及特点求哈夫曼树的方法设计哈夫曼编码的方法一、下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句(不允许使用额外的辅助变量)。voidreverse(linklist&L){p=NULL;q=L;while(q!=NULL){(1);q->next=p;p=q;(2)___;}

(3)_____;}二、假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。(1)下面所示的序列中哪些是合法的?

A.IOIIOIOOB.IOOIOIIOC.IIIOIOIOD.IIIOOIOO(2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回TRUE,否则返回FALSE(假定被判定的操作序列已存入一维数组A中)。三、设模式串t=‘abcabaa’,试求出该模式串的next和nextval数组的值。四、设一棵二叉树的先序、中序遍历序列分别为先序遍历序列:ABDFCEGH中序遍历序列:BFDAGEHC(1)画出这棵二叉树。(2)画出这棵二叉树的后序线索树。(3)将这棵二叉树转换成对应的树(或森林)。第七章图图的概念图的逻辑结构特征图的常用术语及含义图的存储结构图的邻接矩阵的存储结构定义及表示法和特点图的邻接表的存储结构定义及表示法和特点图的遍历图的深度优先搜索和广度优先搜索遍历算法及时间性能确定两种遍历所得到的顶点访问序列图的两种遍历与树的遍历之间的关系利用图的两种遍历设计算法解决简单的应用问题生成树和最小生成树生成树和最小生成树的概念对给定的图画出深度和广度优先生成树或生成森林Prim和Kruskal算法的基本思想对给定的连通图,根据Prim和Kruskal算法构造出最小生成树有向无环图的应用拓扑排序的基本思想和步骤拓扑排序不成功的原因求给定AOV网的拓扑序列关键路径、关键活动的概念求AOE网的关键路径的步骤和方法对给定的AOE网,求关键路径和工期最短路径最短路径的含义求单源最短路径的Dijkstra算法的基本思想和时间性能对于给定的有向图,画出根据Dijkstra算法求单源最路径的过程示意图求每一对顶点间最短路径的Floyd算法的基本思想和时间性能A(k)[i,j](1≤k≤n)的含义对于给定的有向图,用Floyd算法求每一对顶点之间的最短路径长度,能写出A(0)

,A(1)

,……A(n)的值1.请给出所示有向图的

1)每个顶点的入/出度;

2)邻接矩阵;

3)逆邻接表;

4)强连通分量。2.画出所示无向图的邻接表,它所邻接到的顶点序号由小到大排列,列出从顶点1出发深度优先和广度优先搜索遍历该图所得顶点序列和边的序列。1562431524633.分别画出按以下两种算法求所示无向带权图的最小生成树的过程

1)Prim算法

2)Kruskal算法4.试列出下图中全部可能的拓扑有序序列,并指出应用教材182页算法toposort求得的是哪一个。abcedfgh493265355765451235645.对于如下AOE网络,计算各活动弧的e(ai)和l(ai)函数值,列出关键路径。123456789a1=6a2=4a3=5a4=1a5=1a6=2a7=9a8=8a9=4a10=2a11=4第九章查找基本概念静态查找表和动态查找表的含义平均查找长度ASL的定义静态查找表顺序查找、折半查找、分块查找的算法思想、算法实现、ASL的分析计算折半查找对存储结构和关键字的要求三种查找方法的主要优缺点动态查找表二叉排序树的定义、特点和用途二叉排序树的查找方法和算法实现、ASL的分析和计算二叉排序树的插入、删除、建树方法输入实例对所建二叉排序树形态的影响平衡二叉树的定义和作用哈希表哈希表、哈希函数、哈希地址和装填因子等有关概念哈希函数的选取原则及产生冲突的原因常用的哈希函数的构造方法解决冲突的主要方法产生“堆积”现象的原因哈希表查找和其它表查找的本质区别。采用线性探测法或拉链法解决冲突时,哈希表的建表方法、查找过程以及ASL的分析计算1.已知含12个关键字的有序表及其相应权值为:

123456789101112

关键字ABCDEFGHIJKL

权值463493261534(1)画出对以上有序表进行折半查找的判定树,求折半查找时查找成功的平均查找长度ASL。(2)若为等概率查找,求折半查找时查找成功的平均查找长度ASL。3.已知如下长度为12的表:(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)(1)试按表中元素的顺序依次插入一棵初始为空的二叉排序树,请画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度ASL。选取哈希函数H(k)=(3k)MOD11。

1)用线性探测开放定址法处理冲突,

2)用链地址法处理冲突试在0~10的散列地址空间中对关键字序列(22,41,53,46,

温馨提示

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

评论

0/150

提交评论