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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构与算法作业.docx

1、数据结构与算法作业数据结构与算法作业说明:1、题号形式: 每题都以【sn,cha,sec】开头,sn表明本题的题目序号,每道题都有唯一的序号;cha表示内容所在的章;sec表示内容所在的节。如 【17,2,1】表示序号17的题来自第2章第1节。2、题型: 1)填空题:1-802)分析计算作图题:序号1-30题(选自数据结构题集严蔚敏等编)3、内容取舍:根据本学期上课课件中的内容,未上课章节的练习可舍弃。4、必做题或选做题:第四章和第五章不考,所以可以选做。1) 填空题:序号1-80题【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关

2、系。【2,1,2】为了最快地存取数据元素,物理结构宜采用 线性结构 结构。【3,1,2】数据结构的三要素是 数据 , 数据元素 , 数据对象 。【4,1,2】数据的逻辑结构可形式地用一个二元组B(K,R)来表示,其中K是 数据元素的有限集_,R是 K上关系的有限集_。【5,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为 顺序存储结构_, 链式存储结构 _。【6,1,4】度量算法效率可通过 依据该算法在编制的程序在计算机上运行时所消耗的时间_来进行。【7,1,4】算法的五个重要特性是确定性、有穷性、可行性、输入和输出。【8,1,4】设n为正整数,则下面程序段的时间复杂度是 T(n)

3、=O(n)_。i=1;k=0;while(in)k=k+10*i;i+;【9,1,4】设n 为正整数,下面程序段中前置以记号的语句的频度是 。 for (i=0; in; i+) for (j=0; jn; j+) if (i+j=n-1) aij=0; 【10,1,4】设n 为正整数,试确定下列各程序段中前置以记号的语句的频度: (1) i=1; k=0; while (i=n-1) i+; k+=10 * i; / 语句的频度是_。 (2) k=0; for (i=1;i=n;i+) for (j=i; jnext=L 。【16,2,3】带头结点的单链表Head为空的条件是_ headne

4、xt=NULL _。【17,2,3】非空单循环链表L中*p是尾结点的条件是_ P!NULL _。【18,2,3】在一个单链表中p所指结点(p所指不是最后结点)之后插入一个由指针s所指结点,应执行s-next=_p-next _;和p-next=_ S_的操作。【19,2,3】在一个单链表中的指针p所指结点之前插入一个由指针s所指结点,可执行以下操作序列:s-next= p-next_;p-next=s;t=p-data;p-data=_ s-data_;s-data=t;【20,2,3】在一个单链表中删除p所指结点时,应执行以下操作: q= p-next; p-data= p-next-dat

5、a; p-next= q-next_ ; free(q);【21,2,3】在单链表中,删除指针P所指结点的后继结点的语句是p- next; p- next=p- next- next; _。【22,2,3】带头结点的单循环链表Head的判空条件是_Head-Null_; 不带头结点的单循环链表的判空条件是_。【23,2,3】删除带头结点的单循环链表Head的第一个结点的操作是_;删除不带头结点的单循环链表的第一个结点的操作是_。【24,2,3】已知L是带表头结点的非空单链表, 且P结点既然不首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。a. 删除P结点的直接前驱结点的语句序

6、列是_。b. 删除结点P的语句序列是_。c. 删除尾元结点的语句序列是_。(1) P = P-next;(2) P-next = P;(3) P-next = P-next -next;(4) P = P-next -next;(5) while (P != NULL) P = P-next;(6) while (Q-next != NULL)P = Q; Q = Q-next;(7) while (P-next != Q) P = P-next;(8) while (P-next-next != Q) P = P-next;(9) while (P-next-next != NULL) P

7、= P-next;(10) Q = P;(11) Q = P-next;(12) P = L;(13) L = L-next;(14) free (Q);【25,3,1】栈操作的原则是 先进后出 。【26,3,1】对一个栈,给定输入的顺序是A、B、C,则全部不可能的输出序列有 。【27,3,1】数据A、B、C、D依次进栈后,再从栈中取一数据,则它是 D 。则本栈得到DCBA的输出序列,其理由是 先进后出,进入的顺序是ABCD则出来的顺序为DCBA 。【28,3,1】.在栈顶指针为HS的链栈中,判定栈空的条件是。【29,3,1】将递归算法改写成等价的非递归算法,通常应该设置 的数据结构【30,3

8、,2】下列程序把十进制数转换为十六进制数,请填写合适的语句成分。(每空2分)void conversion10_16() InitStack(&s); scanf(“%d”,&N); while(N)1 _ _ ; N = N/16; while(!StackEmpty(s)2 _ ; if(e=9)printf(“%d”,e); else printf(“%c”,e-10+A); /* conversion */【31,3,4】若一个栈的输入序列为1,2,3,n,输出序列的第一个元素为n,则第i个输出元素是 n-i+1 。【32,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前re

9、ar=0和front=3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是 和 。【33,3,4】已知一个栈的输入序列为1,2,3,n,输出序列为a1,a2,a3,an,那么a2=n的输出序列共有 0 种。【34,3,4】堆栈和队列都是线性表, 堆栈是_一种先进后出的线性表_的线性表, 而队列是_是一种先进先出的_的线性表。【35,3,4】从循环队列中删除一个元素时,其操作是。【36,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前rear=0和front=3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是 和 。【37,3,4】下面

10、是关于循环队列的操作,请在划线空白处填写合适语句成分。Status EnQueue(SqQueue &Q, QelemType e) if( (Q.rear=1)%MAXSIZE=q.fromt ) retrun ERROR; Q.base(Q.rear+1) % MAXSIZE = e; Q.rear = (Q.rear+1)%MAXSIZE ; return OK; / EnQueue 【52,6,1】已知一棵树边的集合是,。那么根结点是 ,结点b的双亲是 ,结点a的子孙有 ,树的深度是 ,树的度是 ,结点g在树的第 层。【53,6,2】通常使用来表示二叉树结构。【54,6,2】从概念上讲

11、,树与二叉树是二种不同的数据结构,将树转化为二叉树的基本的目的是。【55,6,2】在图1至图5中, _2、3、4、5_是树,_2、3、4_是二叉树,_2、3_是完全二叉树,_3_是满二叉树。 图1 图2 图3 图4 图5【56,6,3】在图4中,结点H在这棵树的前序、中序和后序遍历次序中分别是_、第_5_和第_个结点。【57,6,2】满三叉树的第i层的结点个数为 ,深度为h时该树中共有 结点。【58,6,2】在图4中,A是_结点,D是_结点,B是E的_,B是G的_,D是E的_。这棵树的度是_,深度是_。【59,6,2】程序填空:下列算法是求以二叉链表存储的二叉树中的最小值,设数据域的类型为in

12、t。void minnode(BiTree T, int *min) if(T!=NULL) if( ) *min = T-data; minnode(T-lchild,min); ; 【60,6,2】已知一棵完全二叉树有56个叶子结点,从上到下、从左到右对它的结点进行编号,根结点为1号。则该完全二叉树总共结点有_个;有_层;第91号结点的双亲结点是_号;第63号结点的左孩子结点是_号。(每空2分)【61,6,2】下列表示的图中,共有_5_个是树;有_3_个是二叉树;有_2_个是完全二叉树。【62,6,3】下列二叉树的中序遍历序列是_DBNGOAEC_;后序遍历序列是_。 【63,6,3】一棵

13、二叉树的中序遍历序列是DBNGOAEC,后序遍历序列是DNOGBECA,则其先序遍历的序列中的第一个元素是_ _,第五个元素是_ _,最后一个元素是_【64,6,3】下列二叉树的先序遍历序列的第5个结点是_;第8个结点是_;后序遍历序列的第2个结点是_;第6个结点是_。(每空 2 分)【65,6,3】如果某二叉树的后序遍历序列是ABCDEFGHI,中序遍历序列是ACBIDFEHG,则其先序遍历序列的第一个字母是 ,最后一个字母是 。【66,6,3】程序填空:设算法DFS(Mgraph *G, int i)是无向图G从i顶点开始的深度优先遍历算法。下列算法是判断无向图G是否是连通的。int is

14、connect(Mgraph *G) int i,k=0; for(i=0; ivexnum; i+) visitedi = 0; for(i=0; ivexnum; i+) if(!visitedi) ; DFS(G, i); if(k=1) ; else return 0;【67,7,2】图有 和 等存储结构。【68,7,2】设无权图G的邻接矩阵为A,若(vi,vj)属于图G的边集合,则对应元素Aij等于 ,22、设无向图G的邻接矩阵为A,若Aij等于0,则Aji等于 。【69,7,2】若一个图用邻接矩阵表示,则计算第i个结点的入度的方法是 。【70,7,2】若一个图用邻接矩阵表示,则删除

15、从第i个顶点出发的所有边的方法是 。【71,7,4】n个顶点的连通图至少有 条边。【72,7,4】设一个图G=V,A,V=a,b,c,d,e,f,A=,。那么顶点e的入度是 ;出度是 ;通过顶点f的简单回路有 条;就连通性而言,该图是 图;它的强连通分量有 个;其生成树可能的最大深度是。【73,7,5】下面有向图共有_个顶点;从v3到v2的最短简单路径之一是_;v1的出度是_;包含所有顶点的简单路径之一是_。【74,9,2】n个结点的二叉排序树的最大深度是 ,最小深度为 【75,9,3】设HASH表的大小为 n (n=7), HASH函数为 h(x)=x % n, 如果用线性探测法 F(i)=

16、i解决冲突,请在下面HASH表中依次插入关键字5, 18, 21, 14, 25, 4以后,关键字4、5和25所在地址的下标分别是 、 和 ,插入上述6个元素的平均比较次数是 。下标:0 1 2 3 4 5 6 【76,10,1】排序过程一般需经过两个基本操作,它们是 和 。【77,10,2】结点的关键字序列是(F,B,J,G,E,A,I,D,C,H),对它按字母的字典序进行排列。如果采用Shell排序方法,那么步长取5时,第一次扫描结果的前5个字母分别是 。【78,10,2】在对一组关键字是(54,38,96,45,15,72,60,23,83)的记录进行直接插入排序时,当把第七个记录(关键

17、字是60)插入到有序表时,为寻找插入位置需比较 次。【79,10,3】在利用快速排序方法对一组关键字是(54,38,96,45,15,72,60,23,83)的记录进行排序时,需要递归调用partition函数,递归的最大深度(设第一次调用深度为1)为 ,共需5次递归调用,其中第二次递归调用是对关键字是 的一组记录进行的。【80,10,4】插入排序、希尔排序、选择排序、快速排序、堆排序、归并排序、和基数排序方法中,不稳定的排序方法有 。2) 分析计算作图题:序号1-30(选自数据结构题集严蔚敏等编)【1, 1,4】(选自数据结构题集1.8,选做题)设n为正整数,试确定下列各段程序中前置以记号的

18、语句的频度(语句的频度指的是该语句重复执行的次数)。(1) i=1;k=0;while (i0) if(x100) x-=10; y-; else x+;【2, 1,4】(选自数据结构题集1.9,选做题) 假设n为2的乘幂,并且n2,试求下列算法的时间复杂度及变量count的值(以n函数形式表示) int Time (int n)count =0;x=2; while(x next S ;(2)P next P next next;(3)P next S next;(4)S next P next;(5)S next L;(6)S next NULL;(7)Q P;(8)while (P ne

19、xt ! Q)P P next;(9)while (P next ! NULL) P P next;(10)P Q;(11)P L;(12)L S;(13)L P;【4, 2,2】(选自数据结构题集2.10,选做题)指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。 Status DeleteK(SqList &a,int i,int k)/本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素 if(i 1 | k a.length)return INFEASIBLE;/ 参数不合法 else for(count 1;count i +1;j )a.elemj

20、1 a.elemj;a. length ; return OK; / DeleteK【5, 3,1】(选自数据结构题集3.4,必做题) 简述以下算法的功能(栈的元素类型 SElemType为int)(1)Status algo1(Stack S) int i,n,A255; n 0; while (!StackEmpty(S) n +;Pop(S,An); for(i 1;i n;i +)Push(S,Ai); (2)Status algo2(Stack S,int e) Stack T;int d; InitStack(T); while(!StackEmpty(S) Pop(S,d); i

21、f(d!e)Push(T,d); while(!StackEmpty(T) Pop(T,d); Push(S,d); 【6, 3,1】(选自数据结构题集3.15,选做题)假设以顺序存储结构实现一个双向栈,即在一堆数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么优缺点。【7, 3,4】(选自数据结构题集3.13,必做题)简述以下

22、算法的功能(栈和队列的元素类型均为int)void algo3(Queue &Q)Stack S; int d; InitStack (S);while (!QueueEmpty (Q) DeQueue (Q, d); Push (S,d);while (!StackEmpty (S) Pop (S, d); EnQueue(Q, d);【8, 3,2】(选自数据结构题集3.19,选做题)假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“”和“”和花括号“”和“”,且这三种括号可以按任意的次序嵌套使用(如:())。编写判别给定表达式所含括号是否正确配对出现的算法(已知表达式已

23、存入数据元素为字符的顺序表中)。【9, 4,1】(选自数据结构题集4.3,必做题)设s =I AM A STUDENT,t =GOOD,q =WORKER。求:StrLength(s), StrLength(t), SubString(s,8,7), SubString(t,2,1),Index(s, A), Index(s, t), Replace(s, STUDENT,q ),Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)【10, 5,1】(选自数据结构题集5.1,必做题)假设有两维数组A6x8,每个元素用相邻的6个字节存储,存储按字节编

24、址。已知A的起始地址为1000,计算:(1) 数组A的存储量;(2) 数组A的最后一个元素a57的第一个字节的地址;(3) 按行存储时,元素a14的第一个字节的地址;(4) 按列存储时,元素a47的第一个字节的地址;【11, 6,1】(选自数据结构题集6.1,必做题)已知一棵树边的集合为,请画出这棵树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶子结点?(3)哪个是结点G的双亲?(4)哪些是结点G的祖先?(5)哪些是结点G的孩子?(6)哪些是结点E的子孙?(7)哪些是结点E的兄弟?哪些是结点F的兄弟?(8)结点B和N的层次号分别是什么?(9)树的深度是多少?(10)以结点C为根的子树的深度是多少?【12, 6,1】(选自数据结构题集6.4,选做题)一棵深度为H的满k叉树有如下性质第H层上的结点都是叶子节点,其余各层上每个结点都有k棵非空子树。如果按层次顺序从1开始对全部结点编号,问:(1)各层的结点数目是多少?(2)编号为p的父结点(若存在)的编号是多少?(3)编号为p的结点的第i个儿子结点(若存在)的编号是多少?

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

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