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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

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

2014年9月份考试数据结构第三次作业.doc

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 ( while (! StackEmpty( S) if( i=Pop(S) !=m) Push( while (! StackEmpty( Push(S,i); 2. 下述算法的功能是什么 ? LinkList Demo(LinkList L) / L 是无头结点单链表 ListNode *Q,

3、*P; if(LL=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( scanf(“%d“, if(vnextarc;q=q-nextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NULL; /while return OK; /Build_AdjList 解题方案: 解: Status Build_A

5、djList(ALGraph scanf(“%d“, if(vnextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NULL; /while return OK; /Build_AdjList 评分标准: 2 2 2 2 2 2. 参考答案: 答: int String_Replace(SString /将串 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;lT0) /找到了与 T匹配

6、的子串 :分三种情况处理 if(T0=V0) for(l=1;lnext;p;p=p-next) r=(LStrNode*)malloc(sizeof(LStrNode); r-ch=p-ch; q-next=r;q=r; q-next=NULL; /StringAssign void StringCopy(LString pp=p-next,q=q-next) p-ch=q-ch;pre=p; while(q) p=(LStrNode*)malloc(sizeof(LStrNode); p-ch=q-ch; pre-next=p;pre=p; p-next=NULL; /StringCopy

7、 char StringCompare(LString s,LString t)/串的比较 ,st时返回正数 ,s=t时返回0,snext,q=t-next;pp=p-next,q=q-next); if(!p else if(!p) return -(q-ch); else if(!q) return p-ch; else return p-ch-q-ch; /StringCompare int StringLen(LString s)/求串 s的长度 (元素个数 ) for(i=0,p=s-next;p;p=p-next,i+); return i; /StringLen LString

8、* Concat(LString s,LString t)/连接串 s和串 t形成新串 ,并返回指针 p=malloc(sizeof(LStrNode); for(q=p,r=s-next;r;r=r-next) q-next=(LStrNode*)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /for /复制串 s for(r=t-next;r;r=r-next) q-next=(LStrNode*)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /for /复制串 t q-next=NULL; ret

9、urn p; /Concat LString * Sub_String(LString s,int start,int len)/返回一个串 ,其值等于串 s从start 位置起长为 len的子串 p=malloc(sizeof(LStrNode);q=p; for(r=s;start;start-,r=r-next); /找到 start 所对应的结点指针 r for(i=1;inext) q-next=(LStrNode*)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /复制串 t q-next=NULL; return p; /Sub_Str

10、ing 解题方案: 答: typedef struct char ch; LStrNode *next; LStrNode,*LString; /链串结构 void StringAssign(LString for(q=s,p=t-next;p;p=p-next) r=(LStrNode*)malloc(sizeof(LStrNode); r-ch=p-ch; q-next=r;q=r; q-next=NULL; /StringAssign void StringCopy(LString pp=p-next,q=q-next) p-ch=q-ch;pre=p; while(q) p=(LStr

11、Node*)malloc(sizeof(LStrNode); p-ch=q-ch; pre-next=p;pre=p; p-next=NULL; /StringCopy char StringCompare(LString s,LString t)/串的比较 ,st时返回正数 ,s=t时返回0,snext,q=t-next;pp=p-next,q=q-next); if(!p else if(!p) return -(q-ch); else if(!q) return p-ch; else return p-ch-q-ch; /StringCompare int StringLen(LStri

12、ng s)/求串 s的长度 (元素个数 ) for(i=0,p=s-next;p;p=p-next,i+); return i; /StringLen LString * Concat(LString s,LString t)/连接串 s和 串 t形成新串 ,并返回指针 p=malloc(sizeof(LStrNode); for(q=p,r=s-next;r;r=r-next) q-next=(LStrNode*)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /for /复制串 s for(r=t-next;r;r=r-next) q-next=

13、(LStrNode*)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /for /复制串 t q-next=NULL; return p; /Concat LString * Sub_String(LString s,int start,int len)/返回一个串 ,其值等于串 s从start 位置起长为 len的子串 p=malloc(sizeof(LStrNode);q=p; for(r=s;start;start-,r=r-next); /找到 start 所对应的结点指针 r for(i=1;inext) q-next=(LStrNode*

14、)malloc(sizeof(LStrNode); q=q-next; q-ch=r-ch; /复制串 t q-next=NULL; return p; /Sub_String 评分标准: 1 2 2 1 2 2 2 4. 参考答案: typedef struct KeyType key; InfoType otherinfo; /此类型依赖于应用 NodeType; typedef NodeType SeqListn+1; /n 号单元 用作哨兵 int SeqSearch(Seqlist R, KeyType K) /在关键字递增有序的顺序表 R0.n-1中顺序查找关键字为 K的结点, /成功时返回找到的结点位置,失败时返回 -1 int i; Rn.key=K; /设置哨兵 for(i=0; Ri.key=K;i-); /从表前往后找 if (in /Ri是要找的结点 else return -1 /SeqSearch 等概率情况下查找成功 ASL=(1+2+3+n)/n 等概率情况下查找失败时的 ASL=(1+2+3+n+n+1)/(n+1) 解题方案: 评分标准:

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。