数据结构大作业参考答案_第1页
数据结构大作业参考答案_第2页
数据结构大作业参考答案_第3页
数据结构大作业参考答案_第4页
数据结构大作业参考答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

数据结构大作业只收手工纸面版,统一用学院的实验稿纸。自留底稿,不退。十一、讨论题:顺序存储和链表存储的优缺点对比分析。答:顺序存储的优点是可以做到“随机访问”,缺点是动态操作时间效率低下;链表存储的优点是动态操作高效,不会引起数据的移动,缺点是只能进行“顺序访问”,不能进行“随机访问”。十二、讨论题:循环队列解决了什么问题?优点是什么?如何巧妙地实现环状?答:循环队列解决了简单的队列的顺序存储的“假溢出”问题。它的优点是:相对于一般的顺序存储队列,它不用移动数据就解决了“假溢出”问题,这样就提高了时间效率,此外,它通过求模运算可以成功求出入队、出队的地址,通过牺牲一个空间成功判断了队空和队满两种情况。实现过程:通过求模运算求出入队、出队的地址:rear=(rear+1)%MaxSize;front=(front+1)%MaxSize(front为队头,rear为队尾,MaxSize为循环队列的长度)。牺牲一个空间区分了队空和队满两种情况:front=rear则队空rear+1=front则队满。十三、讨论题:一般而言,如何比较递归和非递归算法的优缺点?答:递归在算法上比非递归更为简单,且比非递归更为容易理解;而非递归算法也有它的好处,递归用到了栈,要重复调用自己,重复调用自己就意味着要循环,这样,时间效率就低下,非递归算法与之相比,效率就比较高。十四、讨论题:常规的排序算法的共同点是什么?答:常规的排序算法的共同点是:逐步缩小待排空间,每次增加一个已排空间。十五、讨论题:字符串和线性表的关系是什么?字符串的操作主要体现在什么方面?答:字符串和线性表的关系是:字符串是一种特殊的线性表。字符串的操作主要体现在:一次性处理大量字符。十六、讨论题:栈和队列的工作原理以及各自的应用范例?答:栈的工作原理:只允许在栈顶进行数据的插入、删除操作,进栈、出栈也只能在栈顶进行,数据拥有“后进先出”的性质。应用范例:用于产生数据逆序,如象棋的悔棋功;也用于保护现场,如递归函数的实现。队列的工作原理:在队尾插入数据,在对头删除数据,数据从队尾进队,从队投出队,数据拥有“先进先出”的性质。应用范例:基于时间公平的机制所必需的数据结构;是任何需要进行缓冲区处理的比较好的实现方案。十七、讨论题:索引存储的特点和优点?答:索引存储的特点:在原始数据外,增加一些所谓的管理家数据,合起来构成一种存储结构,既保存了数据,又保存了关系。索引存储的优点:与链表相比,它可以做到数据的随机访问;与线性表相比,它在近行插、删操作时不会引起大批数据的移动;此外,它还可以在一个字符串内部进行插、删操作。十八、讨论题:诸如迷宫、八皇后、棋盘等课题使用什么数据结构是比较好的选择?为什么?答:诸如迷宫、八皇后、棋盘等课题使用二维数组比较好。因为迷宫、八皇后、棋盘等课题数据之间存在各个方向上的关系,二维数组可很好反映这些关系。此外,棋盘问题涉及到悔棋,故需用到栈;迷宫问题是一个试探和回溯的过程,也应用到栈。十九、讨论题:图的邻接表中,挂链的结点中为什么不能存放实际要处理的数据?答:图的邻接表中,挂链的结点中不能存放实际要处理的数据是因为:挂链的结点反映的是各结点之间的关系(可达或不可达),一般关系不变,它是不会改变的,但若存放实际要处理的数据,结点数据改变,即使关系不变,它也要改变。二十、讨论题:哈希存储法真的能做到O(1)级的查找算法吗?为什么?你如何评价这样的思路。答:哈希存储法不能完全做到O(1)级的查找算法。哈希存储法是利用函数计算出数据应该存放的地址,存入数据,之后在需要查找数据的时候,还使用同样的函数。表面上看,是O(1)级的查找算法,但是,由于无论哪一种函数,它在计算地址时,或多或少都会产生冲突,这就需要通过拉链法或建立一个公共溢出区来解决,而在查找的过程中,对于冲突的数据,就不能通过函数一次找到,而还要进行比较,这样,算法就不为O(1)级的。虽然哈希存储法不能完全做到O(1)级的查找算法,但由于所选函数往往能保证大部分数据不会发生冲突,冲突的只是少部分,最终的查找效率依然是很高的。单选题复习用1、数据结构除了研究数据本身如何表示和存储外,还需要重点研究数据___________D_____。(A)的数量(B)的质量(C)的属性(D)之间的关系2、以下哪种逻辑结构重点表示数据之间的层次关系。B(A)线性结构(B)树形结构(C)图形结构(D)集合结构3、以下哪种存储结构主要是通过增加新的管理数据来同时保证读取数据的高速和动态修改数据的高速。C(A)顺序存储(B)链接存储(C)索引结构(D)哈希存储4、遍历操作是对某个数据结构中所有数据需要做到__A____的访问。(A)至少一次且至多一次(B)可以多次(C)大部分一次,部分可以重复(D)二次5、下面哪一句话是正确的。C(A)算法就是可以运行的程序(B)算法是程序的总结,只能用中文表示(C)算法是表示一种解决问题的思路(D)算法最好用英语表示,这样可以很快切换成程序。6、一个满二叉树共有三层,问有几个结点?C(A)5(B)6(C)7(D)87、结点个数为4个的无向完全图的边数是多少条?B(A)5(B)6(C)7(D)88、实现函数调用返回点管理应该用数据结构__C_____。(A)二叉树(B)图(C)栈(D)队列1、二分查找法适合__C____。(A)适合顺序表和链表等结构(B)数据不需要排序,但是必须顺序存储(C)仅仅把数据排序后的顺序表(D)二叉树和图2、在字符串结构中,哪一个是进行查找操作?D(A)求子串(B)串比较(C)串遍历(D)子串定位3、在字符串的索引结构中,哪一个操作没有对原始数据区进行处理?A(A)插入字符(B)删除字符串(C)删除行(D)修改字符4、一个m*n的矩阵,用列优先存储,元素A(i,j)存储在位置k上,在横向关系上的直接前驱在一维数组中一般地址为(约定每一个元素仅仅占一个单元):(A)k+1(B)k-1(C)k+m(D)k-m5、用建立大根堆来进行排序,最后的结果是什么?B(A)升序(B)降序(C)逆序(D)不一定6、图结构的遍历操作中,一般采用什么机制可以最简单地避免再次访问已经被访问过的结点。C(A)计算是否有环路(B)计数器(C)标志位(D)哈希函数7、如果一个程序在内存中某批数据时进行插入和删除操作非常频繁,则建议使用哪种存储结构?C(A)顺序(B)链接(C)索引(D)哈希8、下面哪个操作不是动态操作?D(A)修改(B)插入(C)删除(D)查找9、如果一个算法的时间效率和数据量无关,用哪种符号表示?A(A)O(c)(B)O(1)(C)O(n)(D)O(x)10、递归的算法包括哪两个环节C(A)前进和撤退(B)上升和下降(C)进入和回退(D)变大和变小11、二叉树的一种遍历名称,其编程实现时一般需要队列的帮助。D(A)先根遍历(B)后根遍历(C)深度遍历(D)层次遍历12、递归程序看似简洁,但是其运行必须启用下面的某种数据结构来管理。B(A)字符串(B)栈(C)森林(D)最优二叉树13、在一个带权连通图G中,权值最小的边一定包含在G的_____生成树中。D(A)广度优先(B)深度优先(C)最小(D)任何14、对称矩阵如果只存储下三角的数据时,可以减少存储量:C(A)一半(B)多于一半(C)少于一半(D)大约2/315、稀疏矩阵m*n中有k个非零元素,用三元组存储时,需要多少单元的存储量?D(A)m*n*3(B)k+3(C)k*3(D)k*3+316、迷宫程序位置移动如果也考虑斜向45度关系,那么某一个位置可以移动走的坐标(不考虑边界等意外因素)有几个?D(A)2(B)4(C)6(D)817、图的邻接表中存储关系数据采用了什么存储结构?C(A)顺序存储结构(B)链式存储结构(C)索引存储结构(D)散列存储结构18、三个数据(A,B,C)通过栈的处理(一次进栈和出栈)不能得到的一种出栈序列是:C(A)(A,B,C)(B)(A,C,B)(C)(C,A,B)(D)(C,B,A)1、计数器减一D(A)i++(B)i=k-1(C)i=count(i)-1(D)i=i-1;2、c语言程序开始运行的入口函数为D(A)intopen()(B)intstart()(C)intmian()(D)intmain()3、地址编号为10100的一个语句调用了一个函数,那么为了能正确的返回,必须启用什么机制?C(A)在被调用函数最后一句写上return(10101)(B)启用一个标志位,管理返回点(C)启用一个栈,管理返回点(D)通知机房工作人员,请求帮助4、以下的语句是什么功能?p=p->next;A(A)指针p向其直接后继移动(B)p的值减去next的值(C)指针p向其直接前驱移动(D)判断p是否大于next的值5、c语言(不是c++)中申请一个新结点是什么语句?D(A)newnode=NEWnode;(B)newnode=NewOneNode;(C)newnode=malloc(Node);(D)newnode=(Link*)malloc(sizeof(Node));6、c语言(不是c++)中输出结点中的数据是什么语句?B(A)printdata;(B)printf("[%d,%d],Pointer->Number,Pointer->Total);(C)print(p->data);(D)cout(p->data);7、c语言(不是c++)中输入数据是什么语句?C(A)inputdata;(B)cin(data):(C)scanf("%d",&data);(D)scanf("%d",data);8、顺序栈进栈的主要动作为:B(A)先写入数据,再移动top(B)直接填入数据到合法地址即可(C)先移动top,再写入数据(D)把数据填入最边界的单元中9、哪一个是合法的一维顺序表地址计算公式?B(A)locAi=locA1+i(B)ai=loc(a0)+i*d(C)i=loc(A0)-d(D)Loc(Ai)=Loc(A1)-(i-1)*d10、环队结构出队产生下一个合法地址的语句是:D(A)f=f+1(B)f=(f+1)%MaxSize(C)f=f+MaxSize(D)rear=(rear+1)%M1、Windows操作系统中在外存硬盘上的文件采用的哪种数据结构的构造思想?(A)线性链表(B)哈希表(C)十字链表(D)索引文件2、象棋程序中棋盘表示、悔棋功能、复盘功能对应的三种底层数据结构为:C(A)广义表+树+三元组(B)线性表+栈+字符串(C)二维数组+栈+队列(D)图+队列+最优二叉树3、一个小型机的机房中,有10位老师在做科研,有30位博士和硕士在做设计,有300名学生在做实验。请问对该小型机的CPU时间片管理应该采用哪种策略是最佳方案?(A)启用先到先服务的队列机制(B)启用能表示层次结构的树(C)启用分块的哈希表(D)启用优先级系数和队列排队结构4、(c语言中)从键盘输入一个数学表达式,现在要把该表达式进行存储,此时如何定义这个结构的数据类型?B(A)二叉树(B)字符串(C)字符数组(D)整型5、AOV网需要产生拓扑排序,其数据结构必须是?(A)无向图(B)有向无环图(C)森林(D)线性表6、如果要求编程计算多项式的和,存储多项式的最佳存储结构是什么?A(A)链表(B)数组(C)哈希(D)集合7、如果一个无向图,需要用相对节省空间的方式存储其中的关系信息,那么建议采用什么方案?D(A)设法使该图的边非常少,从而可以启用三元组(B)有边的才用链表表示,临时申请结点(C)继续用二维数组存储,但是遇到0的时候空置其存储单元(D)先用二维数组表示然后改为只存储下三角矩阵的数据结构8、推箱子小游戏、迷宫等底层设计中布局应该启用什么数据结构?C(A)图(B)集合(C)二维数组(D)一维数组9、哪种高级语言的代码构造结构是广义表?(A)c++(B)Lisp(C)c(D)java10、为了表示军队、公司等层次化管理机制,应该采用哪种数据结构表示?C(A)图(B)二叉树(C)树(D)字符串一、已知有4个元素为:12,33,40,51。用单链表(约定头指针为head,新结点指针为new,搜索指针为p)从左到右依次存储。分别画出(1)进栈39(2)进队39(3)有序表插入39等三种情况的工作示意图。并标注上改链的次序和主要的工作语句。(1)进栈39head12334051123340513939new主要的工作语:new->next=head->next;head->next=new;(2)进队39head5140331251403312rear3939new主要的工作语:new->next=NULL;rear->next=new;rear=new;(3)有序表插入39headp51403312514033123939new主要的工作语:new->next=p->next;p->next=new;二、自己画一个6*7的稀疏矩阵(比如:非0元只有4个)。画出三元组表示法。并画出对应的转置矩阵的三元组。6770421012182653445215536770111282514024345536250000200 10000000800005000040000000000010030稀疏矩阵三元组压缩存储转置矩阵的三元组三、画出表达式8-6*3/(2-1)的二叉树表示。写出四种遍历的结果。画出利用栈进行计算的完整过程。表达式8-6*3/(2-1)的二叉树表示图————/8/8——*——*13621362前根遍历:-8/*63–21中根遍历:8–6*3/2-1后根遍历:863*21-/-利用栈进行计算的完整过程:操作数8,6,3依次进栈top863863操作数3,6出栈,计算6*3,结果进栈top818818操作数2,1依次进栈top8182181821操作数1,2出栈,计算2-1,结果进栈top81818181 计算结果1,18出栈,计算18/1,结果进栈top818818计算结果18,操作数8出栈,计算8-18结果进栈top-10-10-10出栈即为表达式的值。四、图的存储结构。自己画一个图,至少五个结点,多条边。画出邻接矩阵和邻接表示意图。DD1D2D4D2D4 001001 010001D5D3D5D3 000000D6 000010D6有向图邻接矩阵42D1D2D3D4D5D6142D1D2D3D4D5D663 26362

3625455565邻接表示意图五、树、二叉树、森林的互相转换。自己画一个有三层深度、树的度为3的一棵树,改划成二叉树。有三层深度、树的度为3的一棵树212142860428602424912912改链212142860428602424129129拉直212142860428601292412924旋转形成二叉树212160602482484242991212六、最优二叉树的建立。权值序列:25、12、27、6、1518181815 25271818181261263325 27 3315181518121126121126 523352332725181527251815612112612112272515272515612112612112生成的最优二叉树、七、二分查找法的示意图。自己产生十个数据。画出其中一个元素查找成功的过程。126181521282530369查找30。1261815212825303691

温馨提示

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

评论

0/150

提交评论