



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实习报告题目:约瑟夫环班级:08052712 姓名: 傅宁捷 学号: 08052210 完成日期: 2010.1.4一、 需求分析1. 本演示程序中,编号为1,2,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,如此下去,直到所有人全部出列为止。2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即总人数,m的值,每个人所持的密码),运算结果显示在其后。3. 程序执行的命令包括:(1)构造链表;(2)输入数据;(3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人的密码赋给m;(4)结束。4. 测试数据:m的初始值为20;n7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6,则这正确的出列顺序为6,1,4,7,2,3,5。二、 概要设计为了实现上述操作,应以单向循环链表为存储结构。为此,需要1个抽象数据类型:线性表。1. 线性表的抽象数据类型为:ADT List 数据对象:D=ai|aiElemSet,i=1,2,,n,n0 数据关系:R1=|ai-1,aiD,i=2,3,n 基本操作: InitList( &L) 操作结果:构造一个空的线性表L。ADT List2. 本程序包括三个模块:1) 主程序模块:void main()初始化;输入数据;函数调用;2) 构造链表并输入每个人信息的模块 -实现线性表的抽象数据类型;3) 运行模块-模拟约瑟夫环依次出列;各模块之间调用关系如下:主程序模块 构造链表并输入每个人信息的模块 运行模块三、 详细设计1. 结点类型和指针类型 typedef struct Node int num; int password; struct Node *next;LNode,*LinkList;/ 结点类型,指针类型Status MakeNode(LinkList &p,Elem Type e)/分配由p指向的数据元素为e、后继为“空”的特点,并返回TRUE,/若分配失败,则返回FALSEP=(LinkType)malloc(sizeof(NodeType);If(!p)return FALSE;p-data=e;p-next=null;return TRUE;viod Free Node(Link Type &p)/释放p所指结点2. 主函数和其他函数int main()/主函数LinkList L = NULL; LinkList s ,r; int n,i,j,m; /初始化 printf(请输入人数nn); scanf(%d,&n); printf(请输入mn); scanf(%d,&m);printf(请依次输入每个人的密码n); /输入数据 CreatList(L,s,r,n); /创建链表 run(L,n,m); /模拟约瑟夫环并输出 return 0; / mainvoid CreatList(LinkList &L,LinkList &s,LinkList &r,int n)/创建链表int i=1;s=(LNode*)malloc(sizeof(LNode); /分配空间 scanf(%d,&s-password);/输入密码 s-num = i;/序号为i if(L=NULL) L=s; else r-next=s; r=s; /为下次连接做准备 for(i=2;ipassword); s-num = i; r-next=s; /连接到下个结点 r=s; /为下次连接做准备 r-next = L; /闭合 L = r; / void CreatListvoid run(LinkList &L,int n,int m) /模拟约瑟夫环并输出LinkList s,r;int i,j;for( i = 0; i n; i +) for( j = 1;j next; /报数 s = L-next; r = s-next; printf(%dn,s-num); /输出序号 m = s-password; L-next = r; free(s);/删除结点 /run3. 函数的调用关系图反映了演示程序的层次结构:main CreatList run Make Node Free Node四、 调试分析1. 刚开始由于使用头结点,使得程序不符合要求。2. 在写程序时忽略了一些变量参数的标识“&”,使调试程序费时不少。今后应重视确定参数的变量和赋值属性的区分和标识。3. 本程序模块划分比较简单且容易看懂,但头指针赋空不太合理。4. 本实习作业采用数据抽象的设计方法,将程序划分为3个层次,使得设计时思路清晰,实现调试顺利五、 用户手册1. 本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年米面机械休闲设备项目规划申请报告模范
- 小学六年级英语毕业班冲刺复习计划
- 2025年律师法务专员招聘面试题集及法律热点解读
- 旅游度假区智慧旅游服务系统开发与应用推广
- 2025年本科院校后勤管理面试官常问问题及参考答案
- 2025年静电发生设备项目规划申请报告
- 施工工期承诺及安全保证措施
- 2025年金融行业从业者专业能力提升文档金融知识笔试题集
- 2025年网络安全法律与伦理问题研究报告及练习题
- 机械设备采购合同范本范文
- 2024年长沙市公安局招聘警务辅助人员真题
- 待灭菌物品的装载
- 《急性肺栓塞诊断和治疗指南2025》解读
- 2025年职业卫生技术服务专业技术人员考试(放射卫生检测与评价)历年参考题库含答案详解(5套)
- 《健康体检超声检查质量控制专家建议(2025版)》解读课件
- 2025至2030年中国小信号分立器件行业市场运行现状及投资战略研究报告
- 老年人基础照护护理协助协助老人床椅转移
- 2025年北京中考真题英语试题及答案
- 班组人工协议书
- 2025年浙江省中考社会试题卷(含答案)
- QC/T 1224-2025装备空气悬架的商用车减振效果判定方法
评论
0/150
提交评论