package com.lyf.linkList;
/**
* Created by fangjiejie on 2017/4/19.
*/
public class Josephus<T> {
int n;//共有n个人
int m;//数到m淘汰
Node head=null;
Node tail=null;
class Node<T>{
T data;
Node next;
public Node(T data, Node next) {
this.data = data;
this.next = next;
}
}
public Josephus(int n, int m) {
this.n = n;
this.m = m;
Node tmp= new Node(1,null);
this.head=tmp;
for(int i=2;i<=n;i++){
tmp.next=new Node(i,null);
tmp=tmp.next;
}
tail=tmp;
tmp.next=head;
}
public Node Kill(){
int count=0;
while(head!=tail){//循环链表中,当head==tail,且不为空,则只剩下一个节点
if(++count==m){//如果报数为m,那么此时的head淘汰
System.out.print("kill "+head.data+", ");
tail.next=head.next;
count=0;
}else{
tail=tail.next;//tail 一直定位在被淘汰的人的前一个位置
}
head=head.next;//head 定位在重新开始报数的人的位置,
}
return head;
}
public static void main(String[] args) {
System.out.println("最后剩下了"+new Josephus<Integer>(15,3).Kill().data);
System.out.println("最后剩下了"+new Josephus<Integer>(17,3).Kill().data);
System.out.println("最后剩下了"+new Josephus<Integer>(41,3).Kill().data);
}
}
相关文章
- 解决 IntelliJ IDEA 2019.2.3 java 工程运行中文乱码问题
- 请问C/s方式开发应用程序,如何实现远程访问数据库????以下问题用什么方式解决好??
- Java并发编程实战 03互斥锁 解决原子性问题
- 解决对含有第三方jar包的项目打包出现java.lang.NoClassDefFoundError问题
- 解决idea中maven项目无法读取src/main/java目录下面的配置文件问题
- Java解决表格统计“近一日、近一周、近一月”数据的时间函数调用问题
- Java多线程间通信-解决安全问题、等待唤醒机制
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理