2022年约瑟夫环 2.pdf
《2022年约瑟夫环 2.pdf》由会员分享,可在线阅读,更多相关《2022年约瑟夫环 2.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实习报告题 目:实现一个约瑟夫环程序班级: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
2、,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 返回其
3、值,L 长度减 1。2 程序包含四个模块:1)主程序模块:void main()初始化;for(;)while(命令=开始)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -接受命令;处理命令;for(;)2)有序表单元模块实现有序表的抽象数据类型;3)节点结构单元模块定义有序表的节点结构;4)数据输入分析模块判断输入数据正确有效;各模块之间的调用关系如下:主程序模块有序表结构模块节点结构单元模块数据输入分析模块三、详细设计1、结点类型,指针类型Typedef struct LNode int code,date;/code 为人所在位置 date 为人持有的密码stru
4、ct 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年约瑟夫环 2022 约瑟夫
限制150内