欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年约瑟夫环 2.pdf

    • 资源ID:39735871       资源大小:42.87KB        全文页数:4页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年约瑟夫环 2.pdf

    实习报告题 目:实现一个约瑟夫环程序班级:05 计(1)姓名:学号:完成日期:2007.10.12 一、需求分析1 本演示程序中,利用单向循环链表存储结构存储约瑟夫环数据(即 n 个人的编号和密码)。2 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示 提示信息之后,由用户在键盘上输入演示程序中需要输入的数据,运算结果显示在其后。3 程序执行的命令包括:1)构造单向循环链表;2)进行数值的输入,并作判断分析;3)约瑟夫算法的实现与结果输出;4)结束。4 测试数据m 的初值为 20;n=7,7 个人的密码依次为:3,1,7,2,4,8,4,(正确的出列顺序为 6,1,4,7,2,1,3,5)。二、概要设计1单向循环链表的抽象数据类型定义为:ADT List 数据对象:D=ai|ai?正整数,I=1,2,.,n,n 0数据关系:R1=|,ai-1,ai?D,I=1,2,.,n基本操作:Init List(&L)操作结果:构造一个空的线性表L。List Insert(&L,i,e)初始条件:线性表L 已存在,1i List Length(L)+1.操作结果:在 L 中第 i 个位置之前插入新的数据元素e,L 长度加 1。List Delete(&L,i,&e)初始条件:线性表L 存在非空,1i List Length(L).操作结果:删除 L 的第 i 个元素,并用 e 返回其值,L 长度减 1。2 程序包含四个模块:1)主程序模块:void main()初始化;for(;)while(命令=开始)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -接受命令;处理命令;for(;)2)有序表单元模块实现有序表的抽象数据类型;3)节点结构单元模块定义有序表的节点结构;4)数据输入分析模块判断输入数据正确有效;各模块之间的调用关系如下:主程序模块有序表结构模块节点结构单元模块数据输入分析模块三、详细设计1、结点类型,指针类型Typedef struct LNode int code,date;/code 为人所在位置 date 为人持有的密码struct LNode*next;/结点类型,指针类型2、构造单向循环链表struct LNode*p,*head,*q;/定义头节点,和指针for(i=2;icode=i;input(s-date);p-next=s;p=p-next;p-next=head;/根据输入的人数,进行单项循环链表的创建,p 指向最后一个结点,并与头节点链接,形成单项循环链表3、约瑟夫环的程序实现部分while(n!=1)/判断输入人数,如为1 则直接输出结果,不循环 for(i=1,m=m%n;inext;q=p-next;/找到要删除节点p-next=q-next;/找到要删除节点的后继,并连接新环m=q-date;/找到下一个密码printf(%d,q-code);free(q);/释放已删除节点空间n-;/链表长度减一 printf(%d,p-code);/约瑟夫环的结果输出4、其他函数代码数值的输入限制int input()int y,k,z=0;char c;/元素类型char a4;/数组初始化if(!z)/输入判断,确定位数字或控制字符且位置和密码不为零 for(y=0;y=48&c=57)/确定为输入数字ay=c;putch(c);else y-;if(c=r)/确定输入为控制字符即回车或者删除 break;else if(c=8)ay=n;y-;continue;k=atoi(a);/确定最终输入数字的值printf(n);z=k;if(z=0)printf(ERROR!The number couldnt be 0!n);/输入为零,重新输入名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -return(k);/数值的返回5、函数的调用关系图反映程序层次结构Maininput 四、调试分析1、早期程序只写了约瑟夫环的实现部分,没有对输入数据进行筛选,调试的时候会经常出错。比如是输入字母,或者输入0,大于 32767溢出;2、早期的循环过程中没有进行优化,导致循环次数过多,浪费时间;3、为了输出时美观,分别在 input 和 main 函数主体内做了两次,输入非零的判断,浪费了资源;4、算法的时空分析为了限制在输入过程中不会上溢,只在输入中限定为四个不全为零的数字,但是做的是 dowhile 循环,复杂度为 o(1);当 n 大于 1 时:在数据输入中,链表的创建是for 循环,时间复杂度为o(n-1)在约瑟夫环实现程序中,为for 循环。时间复杂度为o(m%n-1)当 n=1时,复杂度为 o(1)。五、用户手册用户根据提示,先输入起始密码m,然后输入人数 n,再根据人数,分别输入每个人的密码 date,数值均不能为 0,否则会提示重新输入,输入为字母则自动丢弃,输入错误可用删除键进行修改,输入完成后按回车键确定本次输入完毕(若输入数字大于9999,则第五位自动转换为下一个数字的起始位,依此类推)。当 n 个数字全部输入完毕,则自动显示结果,按任意键则退出本程序。六、测试结果第一组:m 的初值为 20;n=7,7 个人的密码依次为:3,1,7,2,4,8,4,出列顺序为 6,1,4,7,2,1,3,5。第二组:m 的初值为 30;n=8,7 个人的密码依次为:5,1,6,9,4,7,2,3,出列顺序为 6,5,2,3,7,1,4,8。第三组 :m 的初值为 15;n=6,7 个人的密码依次为:5,3,4,7,6,9,出列顺序为 3,1,2,6,4,5。七、附录源程序头文件名清单:#include malloc.h /内存空间分配头文件#include stdio.h /输入输出函数头文件#include stdlib.h /input函数中字符串转短整形函数的头文件#include conio.h /最后显示结果、清屏函数头文件名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -

    注意事项

    本文(2022年约瑟夫环 2.pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开