丢手帕问题(环形链表)---Java 待优化
/**
*
* @author Administrator
* 功能:丢手帕问题
*/
package com.litao; public class Demo4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cycLink = new CycLink();
cycLink.setLen(5);
cycLink.createLink();
cycLink.setK(2);
cycLink.setM(2);
//cycLink.show();
cycLink.play();
}
} //节点
class Child{
int no;
Child nextChild = null; public Child(int no)
{
//给一个编号
this.no = no;
}
} //环形链表
class CycLink{
//先定义一个指向链表第一个小孩的引用
//指向第一个小孩的引用,不能动
Child firstChild = null;
Child temp = null;
//表示链表的大小,共有几个小孩
int len = 0;
int k = 0;
int m = 0;
//设置m
public void setM(int m)
{
this.m = m;
}
//设置链表的大小
public void setLen(int len)
{
this.len = len;
}
//设置从第几个人开始数数
public void setK(int k)
{
this.k = k;
}
//开始play
public void play()
{
Child temp = this.firstChild;
//1.先找到开始数数的人
for (int i = 1; i < k; i++) { temp = temp.nextChild;
} while(this.len > 0)
{
//2.先数m下
for (int j = 1; j < m; j++) {
temp = temp.nextChild;
}
//找到要出圈的前一个小孩
Child temp2 = temp;
while (temp2.nextChild != temp) {
temp2 = temp2.nextChild;
} //3.将数到m的小孩,退出圈
temp2.nextChild = temp.nextChild;
//让temp指向下一个数数的小孩
temp = temp2.nextChild;
this.len--;
} //最后一个小孩
System.out.println("最后出圈:"+temp.no); }
//初始化环形链表
public void createLink()
{
for (int i = 1; i <= len; i++) {
if(i == 1){
//创建第一个小孩
Child ch = new Child(i);
this.firstChild = ch;
this.temp = ch;
}
else if(i >= 2 && i != len){
//继续创建小孩
Child ch = new Child(i);
temp.nextChild = ch;
temp = ch;
}
else if(i == len)
{
Child ch = new Child(i);
temp.nextChild = ch;
temp = ch;
temp.nextChild = firstChild;
}
}
} //打印该环形链表
public void show()
{
//定义一个跑龙套的
Child temp = this.firstChild;
do{
System.out.println(temp.no+" ");
temp = temp.nextChild;
}while(temp != firstChild);
}
}
丢手帕问题(环形链表)---Java 待优化的更多相关文章
- java 环形链表实现约瑟夫(Joseph)问题
约瑟夫问题又名丢手绢问题.相传著名犹太历史学家 Josephus 利用其规则躲过了一场自杀游戏,而后投降了罗马. 问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.* 从编号为 ...
- 丢手帕问题 (约瑟夫问题)Java实现
问题: 丢手帕游戏是约瑟夫问题的一个变种,游戏很简单,N个小孩围成一个圈,标号为1到N,从编号为m的小孩开始报数,报到第L个小孩退出游戏,然后下一个小孩继续从1开始报数,数到第L个小孩退出游戏,如此循 ...
- 【java基础 12】HashMap中是如何形成环形链表的?
导读:经过前面的博客总结,可以知道的是,HashMap是有一个一维数组和一个链表组成,从而得知,在解决冲突问题时,hashmap选择的是链地址法.为什么HashMap会用一个数组这链表组成,当时给出的 ...
- java面向对象编程--Josephu问题(丢手帕问题)
Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推 ...
- 图解Java数据结构之环形链表
本篇文章介绍数据结构中的环形链表. 介绍 环形链表,类似于单链表,也是一种链式存储结构,环形链表由单链表演化过来.单链表的最后一个结点的链域指向NULL,而环形链表的建立,不要专门的头结点,让最后一个 ...
- Java数据结构之单向环形链表(解决Josephu约瑟夫环问题)
1.Josephu(约瑟夫.约瑟夫环)问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m ...
- Java实现 LeetCode 142 环形链表 II(二)
142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始 ...
- Java实现 LeetCode 141 环形链表
141. 环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...
- 3,java数据结构和算法:约瑟夫环出队顺序, 单向环形链表的应用
什么是约瑟夫环? 就是数小孩游戏: 直接上代码: 要实现这个,只需要理清思路就好了 孩子节点: class Boy{ int no;//当前孩子的编码 Boy next; // 下一节点 public ...
随机推荐
- 在Ubuntu Linux下安装Code::Blocks和Eclipse CDT
最近小白由于有工作学习的需要,要尝试在Linux下进行C++编程.所以特地花了一点时间研究一下Linux下的C++的IDE.最后我尝试了使用Code::Blocks和Eclipse两个著 ...
- R cannot be resolved to a variable 解决办法
Android开发过程中,碰到R cannot be resolved to a variable的报错信息,好像没有很确定的错误原因,一般来说,我总结出几个可能的解决方法,希望试过以后管用... 1 ...
- iOS 隔离导航控制器
题外话:最近这两个月一直很闲,项目上基本没有啥大的需求.对于程序员来说,如果没有需求其实是一件很难受的事情,之前好多次在项目中没事找事,该优化的优化,该整理的整理.可能好多程序员都遇到过与我类似的情况 ...
- <Error>: CGContextRestoreGState
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please ...
- Basic MSI silent install
Articles and post about silent install for Basic MSI, InstallScript, InstallScript MSI: Silent-mode ...
- Mysql多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
- Mac下修改默认的Java版本
今天在安装Elicpse IDE的时候,发现提示安装的Java版本不支持,于是在官方去下载了Jre最新版本并安装,在安装完过后再次打开Elicpse发现提示还是不正确,如果用Google查询到一些资料 ...
- 使用Adobe Photoshop CC 2015批量修改图片尺寸
最近在工作中遇到一个问题,当时客户给的图片尺寸与我要求的图片不符,由于图片非常的多,如果一张一张的修改,十分的麻烦,后来经过一位同事的指点,发现Adobe Photoshop CC 2015可以实现批 ...
- [PHP]htmlentities() 函数
定义和用法 htmlentities() 函数把字符转换为 HTML 实体. 语法 htmlentities(string,quotestyle,character-set) 参数 描述 string ...
- python引入导入自定义模块和外部文件
参考:http://blog.csdn.net/devil_2009/article/details/15816237 项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下 ...