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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

9月份考试数据结构第三次作业.docx

1、2014年9月份考试数据结构第三次作业一、填空题(本大题共10分,共 5 小题,每小题 2 分)1. 数据结构包括数据的 _ 和数据的 _ 。2. 在无头结点的单链表中,第1个结点的地址存放在头指针中,其他结点的存储地址存放在 _ 结点的next域中。3. 为了实现逐层访问,算法中使用了一个 _ ,以记忆正在访问的这一层和上一层的顶点,以便于向下一层访问。4. 在一个循环队列中,队首指针指向队首元素的 _ 位置。5. 弗洛伊德Floyd 算法的时间复杂度为 _ 。二、名词解释题(本大题共10分,共 2 小题,每小题 5 分)1. 请解释名词“头指针”2. 请解释名词“目标串”三、程序阅读题(本

2、大题共20分,共 2 小题,每小题 10 分)1. 指出下述程序段的功能是什么? void Demo2( SeqStack *S, int m) / 设DataType 为int 型SeqStack T; int i; InitStack (&T); while (! StackEmpty( S) if( i=Pop(S) !=m) Push( &T,i); while (! StackEmpty( &T) i=Pop(&T); Push(S,i); 2. 下述算法的功能是什么? LinkList Demo(LinkList L) / L 是无头结点单链表 ListNode *Q,*P; if

3、(L&L-next) Q=L;L=L-next;P=L; while (P-next) P=P-next; P-next=Q; Q-next=NULL; return L; / Demo四、简答题(本大题共20分,共 4 小题,每小题 5 分)1. 如何判别循环队列的空和满? 2. 实际中,需根据不同的情况采用不同的哈希函数。通常,考虑的因素有那些?3. 以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,写出执行直接选择排序算法的各趟排序结束时,关键字序列的状态。4. 在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否

4、将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?五、程序设计题(本大题共40分,共 4 小题,每小题 10 分)1. 编写算法,由依次输入的顶点数目、弧的数目、各顶点的信息和各条弧的信息建立有向图的邻接表。2. 编写算法,在串的定长顺序存储结构上实现串的基本操作REPLACE(&S,T,V)3. 假设以结点大小为1(且附设头结点)的链表结构表示串。试编写实现下列6种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数。4. 设顺序表中关键字是递增有序的,试写一顺序查找算法,将哨兵设在表的高下标端。然后求出等

5、概率情况下查找成功与失败时的ASL。答案:一、填空题(10分,共 5 题,每小题 2 分)1. 参考答案:逻辑结构,存储结构解题方案:评分标准:每空2分2. 参考答案:前趋解题方案:评分标准:每空2分3. 参考答案:队列解题方案:评分标准:每空2分4. 参考答案:前一个解题方案:评分标准:每空2分5. 参考答案:O(n3)解题方案:评分标准:每空2分二、名词解释题(10分,共 2 题,每小题 5 分)1. 参考答案:头指针是一指向链表开始结点的指针(没有头结点时)。解题方案:评分标准:2. 参考答案:在串匹配运算过程中,将主串称为目标串。解题方案:评分标准:三、程序阅读题(20分,共 2 题,

6、每小题 10 分)1. 参考答案:程序段的功能是利用栈T,将一个非空栈S中值等于m的元素全部删去。解题方案:评分标准:2. 参考答案:答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而 原来的第二个结点成为新的开始结点,返回新链表的头指针。解题方案:答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而 原来的第二个结点成为新的开始结点,返回新链表的头指针。评分标准:5四、简答题(20分,共 4 题,每小题 5 分)1. 参考答案:判别循环队列的空或满不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是少用一个

7、元素的空间,每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。解题方案:评分标准:2. 参考答案:答:(1)计算哈希函数所需时间; (2)关键字的长度; 哈希表的大小; 关键字的分布情况; (5)记录的查找频率;解题方案:答:(1)计算哈希函数所需时间; (2)关键字的长度; 哈希表的大小; 关键字的分布情况; (5)记录的查找频率;评分标准:2 1 1 1 13. 参考答案:直接选择排序:(方括号为无序区) 初始态 265 301 751 129 937 863 742 694 076 438

8、第一趟: 076 301 751 129 937 863 742 694 265 438 第二趟: 076 129 751 301 937 863 742 694 265 438 第三趟: 076 129 265 301 937 863 742 694 751 438 第四趟: 076 129 265 301 937 863 742 694 751 438 第五趟: 076 129 265 301 438 863 742 694 751 937 第六趟: 076 129 265 301 438 694 742 751 863 937 第七趟: 076 129 265 301 438 694 7

9、42 751 863 937 第八趟: 076 129 265 301 438 694 742 751 937 863 第九趟: 076 129 265 301 438 694 742 751 863 937 解题方案:评分标准:4. 参考答案:答:下面分别讨论三种链表的情况。 1) 单链表。若指针p指向某结点时,能够根据该指针找到其直接后继,能够顺后继指针链找到*p结点后的结点。但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。 2) 双链表。由于这样的链表提供双向指针,根据*p结点的前趋指针和后继指针可以查找到其直接前趋和直接后继,从而可以删除该结点。其

10、时间复杂度为O(1)。 3) 单循环链表。根据已知结点位置,可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。解题方案:答:下面分别讨论三种链表的情况。 1) 单链表。若指针p指向某结点时,能够根据该指针找到其直接后继,能够顺后继指针链找到*p结点后的结点。但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。 2) 双链表。由于这样的链表提供双向指针,根据*p结点的前趋指针和后继指针可以查找到其直接前趋和直接后继,从而可以删除该结点。其时间复杂度为O(1)

11、。 3) 单循环链表。根据已知结点位置,可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。评分标准:2 2 2五、程序设计题(40分,共 4 题,每小题 10 分)1. 参考答案:解:Status Build_AdjList(ALGraph &G) /输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G); scanf(%d,&v); if(vnextarc;q=q-nextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NUL

12、L; /while return OK; /Build_AdjList解题方案:解:Status Build_AdjList(ALGraph &G) /输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G); scanf(%d,&v); if(vnextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NULL; /while return OK; /Build_AdjList评分标准:2 2 2 2 22. 参考答案:答:int String_Replace(SString &S, SString T, SString V); /将

13、串S中所有子串T替换为V,并返回置换次数 for(n=0,i=1;iT0) /找到了与T匹配的子串:分三种情况处理 if(T0=V0) for(l=1;l=i+T0;l-) Sl+V0-T0=Sl; for(l=1;l=V0;l+) Si+l-1=Vl; else /新子串长度小于原子串时:先将后部左移 for(l=i+V0;l=S0+V0-T0;l+) Sl=Sl-V0+T0; for(l=1;l=V0;l+) Si+l-1=Vl; S0=S0-T0+V0; i+=V0;n+; /if /for return n; /String_Replace解题方案:答:int String_Replace(SString &S, SString T, SString V); /将串S中所有子串T替换为V,并返回置换次数 for(n=0,i=1;iT0) /找到了与T匹配的子串:分三种情况处理 if(T0=V0) for(l=1;l=T0;l+) /新子串长度与原子串相同时:直接替换 Si+l-1=Vl; else if(T0=i+T0;l-) Sl+V0-T0=Sl; for(l=1;l=V0;l+) Si+l-1=Vl; else /新子串长度小于原子串时:先将后部左移 for(l=i+V0;l=S0+V0-T0;l+) Sl=Sl-V0+T0; for(l=1;l=V0;l

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

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