循环列表的Java实现,解决约瑟夫环问题
import java.util.Scanner; /**
* 循环列表的Java实现,解决约瑟夫环问题
*
* @author LIU
*
*/
public class LinkedList {
// 定义结点,必须是static
static class Node {
int data;
Node next; Node(int arg1) {
this.data = arg1;
}
} public static void main(String[] args) {
int n = 0, m = 0;// 定义总人数n,和出圈数字m
// 输入n和m
System.out.println("输入总人数n,出圈数字m");
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt(); // 初始化循环列表,头结点first和尾结点p
Node first = new Node(1);
first.next = first;
Node p = first;
for (int i = 2; i <= n; i++) {
Node temp = new Node(i);
temp.next = p;
p.next = temp;
p = p.next;
}
p.next = first;// 尾接头形成循环链表(p为尾结点) // 执行出圈操作
System.out.println("出圈顺序为:");
while (p != p.next) {
// 下面for循环后,p是第m个结点的前一个结点
for (int i = 1; i < m; i++)
p = p.next;
// 删除第m个结点
System.out.print(p.next.data + " ");
p.next = p.next.next;
}
System.out.print("\n幸运者是:" + p.data);
} }
循环列表的Java实现,解决约瑟夫环问题的更多相关文章
- php解决约瑟夫环的问题
php里面解决约瑟夫环还是比较方面的,但是下面的方法太费空间 <?php class SelectKing{ private $m;//幅度 private $n;//总数 public fun ...
- C++循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? “约瑟夫环是一个数学的应用问题:已知n个人(以 ...
- PHP解决约瑟夫环问题
PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...
- 单向环形链表解决约瑟夫环(Josephus)问题
一.约瑟夫环问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那 ...
- Java学习之约瑟夫环的两中处理方法
package day_2; import java.util.Scanner; /** * @author Administrator * 约瑟夫环问题: 设编号为 1,2,3,....n的N个人围 ...
- JAVA中的约瑟夫环和猴子王问题
今天在书上(书名< java程序设计经典300例 >李源编著)看了一个有趣的问题,那就是java版的约瑟夫问题,想必大一的小伙伴们早就用c写过了吧 今天我在复习一下 首先问题是这样的n个人 ...
- 10行Python代码解决约瑟夫环(模拟)
http://blog.csdn.net/dengyaolongacmblog/article/details/39208675 #!/usr/bin/env python # coding: utf ...
- Java循环链表实现约瑟夫环(搬运)
public class Josephus { static class Node{ int val; Node next; Node(int v){ val=v; } }//成员类,代表节点,类似于 ...
- golang数据结构之用循环链表解决约瑟夫环问题
josephu.go package link import ( "fmt" ) type Kid struct { ID int next *Kid } func AddKid( ...
随机推荐
- C#伪静态实现的方法
在asp.net开发网站的时候,我们经常会用到伪静态,好处是可以隐藏真实的路径,提高网站的安全性,在官网等展示网站希望对搜索引擎友好,提高搜索排名:或者在涉及到模板开发都会用到伪静态.下面讲解下平时用 ...
- 枚举IoTimer
/*************************************************************************************** * AUTHOR : ...
- 转: CSS中float和clear的理解
float:浮动,比如,默认的,我们知道,div是占满一行的,现在我们想把两个div显示在一行上,那怎么办呢<div style="width:100px;">1111 ...
- 3.精通前端系列技术之深入学习Jquery(一)
使用Jquery的好处: •简化JS的复杂操作 •不再需要关心兼容性(原生js获取元素样式.事件需要做兼容性) •提供大量实用方法 1.选择网页元素 <!DOCTYPE html PUBLIC ...
- windows-docker开发我常用命令 docker-machine ssh default
docker-machine ssh default docker logs test sudo systemctl start docker docker tag IMAGEID ne ...
- C++中两块内存重叠的string的copy方法
如果两段内存重叠,用memcpy函数可能会导致行为未定义. 而memmove函数能够避免这种问题,下面是一种实现方式: #include <iostream> using namespac ...
- swing Event-Listener-Adapter 对照表
Source Event Event Listener AbstractButton (JButton,JToggleButton, JCheckBox,JRadioButton ActionEven ...
- python3控制路由器--使用requests重启极路由.py
代码写了相应的注释,以后再写成可以方便调用的模块. 用fiddler抓包可以看到很多HTTP头,经过尝试发现不是都必须的. 'Upgrade-Insecure-Requests':1,#必要项,值为1 ...
- 更改layout的布局
创建了一个layout,缺省都是LinearLayout,原来都在xml把他改成其他布局,习惯了拖放的方式觉得挺麻烦. 其实vs2013有这个功能,就是在设计界面单机右键可以删除布局,然后拖一个布局进 ...
- SimpleDateFormat格式化日期
SimpleDateFormat格式化日期 import java.text.SimpleDateFormat;import java.util.Date;public class test { pu ...