ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:38.42KB ,
资源ID:30396775      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30396775.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构及算法 期末复习思考题.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构及算法 期末复习思考题.docx

1、数据结构及算法 期末复习思考题 北京工业大学校选修课程 数据结构及算法期末复习思考题2011年12月一、填空题1.数据结构研究以下三个方面的内容: 数据的存储结构 、 数据的运算 以及定义在相应结构上的数据运算的逻辑性操作规则及其程序实现。2.根据同一数据对象中各个数据元素之间存在的逻辑关系的不同数学特性,通常可将数据结构分为四类: 线性结构 、 树型结构、 图状结构 以及纯集合结构。3.在解决同一问题的不同算法中,时间复杂度 而且空间复杂度 的算法的执行效率愈高。4.在单链表中,除了首元结点外,任一结点的存储位置保存在该结点的 结点中的“后继结点指针域”中。在设有头结点的单链表中,链表的头指

2、针指向头结点,而首元结点的地址被保存在 中的“后继结点指针域”中。在不设头结点的单链表中,链表的头指针指向首元结点或为空值。5 在顺序表中逻辑上相邻的元素的物理位置 紧邻,在单链表中逻辑上相邻的元素的物理位置 紧邻。6、在表长为n的顺序表中插入或删除一个数据元素,需要平均移动 个数据元素,具体每次插入或删除操作时需要实际移动的数据元素的个数与被操作的数据元素在表中的 有关。二、单项选择题1如果打算利用单向链表的存储方式来实现一个队列的基本运算,并且入队运算和出队运算使用频率最高,则采用以下哪种存储方式效率最高?( )A不设头结点的单向非循环链表; B.仅设头指针的单向循环链表;C. 设有头结点

3、的单向非循环链表; D.仅设尾指针的单向循环链表。2. 当循环队列的出队运算执行时,应首先判断的条件是( ),其中m表示循环队列中数组的容量。A. front=rear B.(front+1)% m=rearC. (rear+1) % m=front D. rear % m=front3. 在某个循环队列中,保存数据元素的数组的容量为13,在某时刻front=5,rear=1,则此时队列中共有( )个数据元素。 A. 4 B. 9 C. -4 D. 以上都不正确4. 假设线性表1,3,5,7,9被存储在一个带头结点的单向链表中,指针变量p指向单向链表中存放线性表的第2个数据元素的结点,指针变量

4、q指向存放线性表的第3个数据元素的结点,则执行语句序列 p-next=q-next;free(q);q=p-next;后,q-data的值是:( )。A. 3 B. 5 C. 7 D. 95.设数据元素1、2、3、4依次进入一个栈,规定数据元素进栈后可以立即出栈,也可以不出栈,并且只有处于栈顶部的数据元素才允许出栈,则在下列序列中不合法的出栈序列是:( )A4321 B. 3241 C. 1234 D. 42316.若用一个容量为6的按C语言定义的数组来实现循环队列,初始化循环队列时将front和rear设置为0,在某个时刻front=2和rear=5。如果此时执行一次入队运算,则front和

5、rear的值分别为( )。A. 1和0 B. 2和4 C.2和0 D. 2和67.某棵二叉树采用顺序存储结构表示,根结点存储在一维数组的下标为1的元素中,如果某个度为2的非叶子结点在数组中存放在下标为12的位置,则其右孩子结点的存放位置为( )A 25 B 6 C 3 D 248.如果从无向图的任一顶点出发进行一次深度优先搜索不可以访问到该图中的所有顶点,则该无向图一定是:( )A 完全图 B 连通图 C 强连通图 D 非连通图三、判断正误 1具有n个结点的二叉树,采用二叉链表存储,共有n+1个空链域。( )2就插入和删除运算效率而言,线性表采用顺序存储结构实现比起采用链接式存储结构实现效率更

6、高。( )3在单向循环链表中,能够从当前结点出发到达任一其它结点。( )4队列的运算特征是LIFO,栈的运算特征是FIFO。( )5线性表的特点是每个元素都有且仅有一个直接前驱和一个直接后继。( )6. 任何一种链表的每个结点中都只包含一个指针域。( )7. 若一棵二叉树的任意一个非叶子结点的度为2,则该二叉树一定不是完全二叉树。( )8. 对任意一个图,从它的某个顶点出发进行一次深度优先或广度优先遍历可访问到该图的每个顶点。( )9. 非线性的数据结构不仅可以采用顺序方式存储,也可以采用链接方式存储。( )10. 栈是运算受限的线性表,插入或者删除运算只允许在表的一端进行。( )四、简答题

7、1简述线性表采用顺序存储方式实现时的优缺点。优点:无须为表示结点间的逻辑关系而增加额外的存储空间;可以方便的随机存取表中的任一结点.缺点:插入和删除运算不方便,需移动大量元素;由于要求占用连续的存储空间,存储分配只能按最大存储空间预先进行,致使存储空间不能得到充分利用;表的容量难以扩充.链表存储:优点:插入删除操作可通过修改结点的指针实现,无须移动元素;方便扩充存储空间;缺点:不能随机存取元素;2简述二叉树采用顺序存储方式实现时的优缺点。3什么叫有序树?什么叫无序树?有序树和二叉排序树的差别是什么?有序树与二叉树的区别是什么?4什么是排序方法的稳定性?试判断起泡排序算法的稳定性。5、简述散列表

8、(Hash表)的工作原理并就插入、删除、查找运算分析它的优缺点。五、综合题1.如图1所示的二叉树,试写出它的三种遍历序列。(1)先序遍历序列:abcdefghi(2)中序遍历序列:bcdafehig (3)后序遍历序列:dcbfihgea 图1 题五1的二叉树2. 以4,7,8,2,5,16,30作为叶子结点的权值构造一棵Huffman树,并计算其带权路径长度(WPL)。3.对图2所示的有向图,请给出它的: (1)邻接矩阵 (2)邻接表 (3)强连通分量 (4)试写出从顶点2出发的根据(2)中邻接表得到的广度优先遍历序列2 4.以关键码序列(26,38,15,97,76,12)为例,手工执行快

9、速排序算法(按升序方式),写出每一趟排序结束时的关键码序列。5、对图3所所表示的有向图,(1)写出全部可能的拓扑序列;(2)给出一个具体的邻接表存储结构示意图;(3)根据你的邻接表,在规定入度为0的顶点按照栈式存储的约束下,写出拓扑排序算法的执行结果序列。 图3:题五5的有向图6、选取哈希函数为H(k)=(k) MOD 7,并采用拉链式方法处理冲突,试在06的散列地址空间中对关键字序列(19,14,23,2,68,47,16,28,36,52)构造散列表,并计算出在该表中进行查找时的平均查找长度。六、算法理解题1、分析下列程序,剖析Unknow1函数的功能,按照要求写出主程序执行的结果。给定结

10、点格式如下及变量定义如下:#include #include #include #define NULL 0typedef struct node int data; struct node *next;Lnode; /*定义单向链接表的结点格式*/ Lnode *Unknow1(Lnode *L) Lnode *p,*q; if(L!=NULL & L-next!=NULL) q=L; L=L-next; p=L; while(p-next!=NULL) p=p-next; p-next=q; q-next=NULL; return (L);else return (L);void main

11、()int item,i;int a6=13,3,5,7,9,11;Lnode *head1,*head2,*pM,*qM;head1= (Lnode *)malloc(sizeof(Lnode); head1-next=NULL;head1-data=a0;pM=head1;for (i=1;idata=ai; qM-next=NULL; pM-next=qM; pM=pM-next; pM=head1;printf(nBefore call Unknow1:n); for(i=0;idata; printf(data%d=%dn,i+1,item); pM=pM-next; head2=U

12、nknow1(head1); pM=head2; printf(nAfter call Unknow1:n); for(i=0;idata; printf(data%d=%dn,i+1,item); pM=pM-next;(1)画出主程序中调用Unknow1函数前的链表示意图(2)画出主程序中调用Unknow1函数后的链表示意图(3)写出主程序的执行后显示在屏幕上的结果2简述以下算法的功能,画出算法的流程图。 其中Stack是顺序栈类型说明符。StackEmpty(Stack st)表示当st中没有元素时返回true,有元素时返回false。void Unknow2(Stack s) int

13、i,n,A255;n=0;while(!StackEmpty(s) n+; pop(s,An); for(i=1;i1) if(gx-1y=old) gx-1y=color; b.x=x-1;b.y=y; EnQueue(Q,b); if(y1) if(gxy-1=old) gxy-1=color; b.x=x;b.y=y-1; EnQueue(Q,b); if(xm) if(gx+1y=old) gx+1y=color; b.x=x+1;b.y=y; EnQueue(Q,b); if(yn) if(gxy+1=old) gxy+1=color; b.x=x;b.y=y+1; EnQueue(Q,b);/end of while/end of Replace_color

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

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