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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(完整word版约瑟夫环Java课程设计大作业Word下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版约瑟夫环Java课程设计大作业Word下载.docx

1、报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。【基本要求】利用单向循环链表存储结构或顺序存储结构模拟此过程,按照出列的顺序印出各人的编号。【测试数据】 m的初值为20;n7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序应为6,1,4,7,2,3,5)。1、运行环境(软、硬件环境)开发工具:JDK1.6 eclipse6.0 运行环境:Windows XP及其以上系统2、输入的形式和输入值的范围 本个实验所输入的值都强制转化为Int数据类型,因为人数一定是个正整数,

2、而每个人所持的密码将会作为下一次循环的步数,所以也一定是一个整数;初始密码也是步数,所以也是一个正整数。在输入值的取值范围上,每人的密码是一个大于零的整数,初始密码也是一个大于零的整数,人数同样也是一个正整数。3、输出的形式描述 1.可以在以下环境中运行本次实验 在DOS环境中编译“约瑟夫环.Java”文件 在Eclipse6.0及其以上编译环境下运行 2.根据文字要求依次输入人数、每人密码、初始密码等一些数据(见图1.3.2) (图)1.3.24、功能描述 约瑟夫环代码约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他参加并记录了公元6670年犹太人反抗罗

3、马的起义。约瑟夫作为一个将军,设法守住了裘达伯特城达47天之久,在城市沦陷之后,他和40名死硬的将士在附近的一个洞穴中避难。在那里,这些叛乱者表决说“要投降毋宁死”。于是,约瑟夫建议每个人轮流杀死他旁边的人,而这个顺序是由抽签决定的。约瑟夫有预谋地抓到了最后一签,并且,作为洞穴中的两个幸存者之一,他说服了他原先的牺牲品一起投降了罗马。本次试验的不同点在于有一个初始密码M、每人又有个密码,在他死后(出局)之后将作为下一个循环的步数,这样以此类推得出最后一个幸存者。这个实验主要是模仿约瑟夫环的意思模拟约瑟夫环。差别在与每人的密码将作为下一个循环步数继续开始另一个约瑟夫环的循环处理。最后得到一个出此

4、链表的数字下标代号。5、测试数据初始密码M=20人数为77个人的密码依次为:3,1,7,2,4,8,4最后得到一个出此链表顺序,用每个链表中元素的下标输出数据。二、概要设计1、抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述) 创建Node和LinkList这两个类,在Node类中定义一些函数,为主程序中调用这些函数所服务;LinkList类Head指针调用SetLink函数,然后遍历结点,一次删除结点,使得指针后移。在主函数中运用一个For循环作为足要算法,一次实现约瑟夫环的功能。2、功能模块设计(如主程序模块设计)先创建了一个linklist对象,然后分别申明inCount和res

5、ultIncount这两个私有成员变量。然后通过inCount = Integer.parseInt(input.readLine();把输入的内容转化成INT类型,赋值给inCount。通过一个For循环语句作为其主要算法实现。Node p = link.head, q = link.last; int i = 0;/每个人的密码 int j = 0;/人数 for (;) i+; if (i = m) i = 0; m = p.getData(); System.out.print(p.getCount() + ); link.removeNode(q);/删除Q节点 p = p.getL

6、ink();/Q结点后移 j+; if (j = inCount) break;/如果等于总人数就跳出FOR循环 continue;/继续进行下一个循环 q = q.getLink();/Q的指针往后移 p = q.getLink();/P等于Q的下一个指针 3、模块层次调用关系图三、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。class Node private int data = new int2; private Node link; private static int count = -1; public Node(int data) th

7、is.data0 = data; this.data1 = +count; link = null; public void setData(int data) public int getData() return data0; public int getCount() return data1; public void setLink(Node link) this.link = link; public Node getLink() return link; 在这个结点NODE类中定义了诸如setData、getData、getData、getCount、 setLink、getLin

8、k等一些函数,为主函数调用这些函数做好准备。这也是前期工作 的准备。class LinkList public Node head; public Node last; public LinkList(int data) head = new Node(data); /Head调用NODE的构造函数,初始化Head head.setLink(head); /Head调用SetLink的函数 last = head; public String vistAllNode() /遍历节点 Node next = head; String s = new String(); do s = s + ne

9、xt.getData() + /把指针next指向的对象添加到字符串S中 next = next.getLink(); /把指针后移,获取下一个指针 while (next != head); return s; public boolean removeNode(Node node) / 去掉node的下一个结点 if (node = last) head = head.getLink(); /把头指针指向下一个节点 last.setLink(head); /尾指针=头指针 else if (node.getLink() = last) last = node; /Last指向头指针 els

10、e Node tempN = node.getLink();/申明一个临时的指针TEMPN指向NODE的下一个节点 tempN = tempN.getLink(); /把tempN向后移一个 node.setLink(tempN); /node指向tempN return true; /操作成功返回true public boolean removeAll() /此函数的作用是删除所有的节点 /Head=Head /Last=Head head.setData(0); /head的数据设置为0 public void append(int data) /此函数的作用是加一个节点 Node te

11、mp = new Node(data); /申明TEMP节点 last.setLink(temp); /尾指针指向TEMP指针 last = temp; /尾指针指向TEMP指针 last.setLink(head); /尾指针指向头指针在LinkList类中申明头尾指针head和last,head和last分别调用Node和setLink函数,在进行结点的遍历和,当删除一个结点之后便产生了指针后移的问题,直到头尾指针相同。public class 约瑟夫环 private static LinkList link = new LinkList(0);/申明一个LinkList 的对象 pri

12、vate static int inCount; private static int resultInCount; /申明两个变量 public static void main(String args) throws IOException /主函数抛出异常 int enter; String inputString = new String(); BufferedReader input = new BufferedReader(new InputStreamReader( System.in); /定义一个缓冲流对象 System.out.print(这个程序是解决约瑟夫环的问题。n请

13、输入人数(正整数): inCount = Integer.parseInt(input.readLine();/把输入的内容转化成INT类型,赋值给INCOUNT请输入初始密码: int m = Integer.parseInt(input.readLine(); System.out.println(请输入每个人的密码: for (resultInCount = 0; resultInCount inCount; resultInCount+) inputString = input.readLine(); enter = Integer.parseInt(inputString); link.append(enter); /循环输入的内容放到链表中 link.removeNode(link.last); /去掉

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

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