1. public class Josephu {
  2.  
  3. public static void main(String[] args) {
  4. Cyclink cyclink=new Cyclink();
  5. cyclink.setLen(5);
  6. cyclink.createLink();
  7. //cyclink.show();
  8. cyclink.setK(2);
  9. cyclink.setM(2);
  10. cyclink.play();
  11. }
  12.  
  13. }
  14.  
  15. class Child{
  16. int no;
  17. Child nextChild=null;
  18. Child(int no){
  19. this.no=no;
  20. }
  21. }
  22.  
  23. class Cyclink{
  24. //先定义指向链表对第一个小孩的引用
  25. //指向第一个小孩的引用 不能动,所以需要定义游标
  26. Child firstChild=null;
  27. Child temp=null;
  28. int len=0;//共有0个人入圈
  29. int k=0;
  30. int m=0;
  31. public void play(){
  32.  
  33. Child temp=this.firstChild;
  34. for(int i=1;i<k;i++){
  35. temp=temp.nextChild;
  36. }
  37. while(len!=1){
  38. for(int j=1;j<m;j++){
  39. temp=temp.nextChild;
  40. }
  41.  
  42. Child temp2=temp;
  43. while(temp2.nextChild!=temp){
  44. temp2=temp2.nextChild;
  45.  
  46. }
  47. temp2.nextChild=temp.nextChild;
  48. temp=temp.nextChild;
  49. this.len--;
  50. }
  51. System.out.println(temp.no);
  52. }
  53. public void setK(int k){
  54. this.k=k;
  55. }
  56. public void setM(int m){
  57. this.m=m;
  58. }
  59. public void setLen(int len){
  60. this.len=len;
  61. }
  62. public void createLink(){
  63. for(int i=1;i<=len;i++){
  64. if (i==1) {
  65. //创建第一个小孩
  66. Child ch=new Child(i);
  67. firstChild = ch;
  68. this.temp = ch;
  69. }
  70. else {
  71. if(i==len){
  72. Child ch=new Child(i);
  73. temp.nextChild=ch;
  74. temp=ch;
  75. temp.nextChild=this.firstChild;
  76. }
  77. else{
  78. Child ch = new Child(i);
  79. temp.nextChild = ch;
  80. temp = ch;
  81. }
  82. }
  83. }
  84. }
  85. public void show(){
  86. Child temp=this.firstChild;
  87. do{
  88. System.out.print(temp.no+" ");
  89. temp=temp.nextChild;
  90. }while(temp!=this.firstChild);
  91. }
  92. }

Josephu--Java链表实现的更多相关文章

  1. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  2. Java链表基本操作和Java.util.ArrayList

    Java链表基本操作和Java.util.ArrayList 今天做了一道<剑指offer>上的一道编程题“从尾到头打印链表”,具体要求如下:输入一个链表,按链表值从尾到头的顺序返回一个A ...

  3. JAVA链表中迭代器的实现

    注:本文代码出自<java数据结构和算法>一书. PS:本文中类的名字定义存在问题,Link9应改为Link.LinkList9应该为LinkList.由于在同包下存在该名称,所以在后面接 ...

  4. JAVA 链表操作:单链表和双链表

    主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...

  5. java 链表数据结构

    首先,单链表相对于队列的优势在于存储地址不是连续的,这样的意义在于,操作其中的某一个位置的元素时不需要对之前的其他元素都进行内存操作,大大的为我们的计算机减压了.下面直接进入正题: 先要定义一个结点类 ...

  6. Java 链表

    按链表的组织形式分有ArrayList和LinkList两种.ArrayList内部其实是用数组的形式实现链表,比较适合链表大小确定或较少对链表进行增删操作的情况,同时对每个链表节点的访问时间都是co ...

  7. 算法_栈与队列的Java链表实现

    链表是一个递归的数据结构,它或者为null,或者是指向一个结点的引用,该结点含有一个泛型的元素和指向另一个链表的引用.可以用一个内部类来定义节点的抽象数据类型: private class Node ...

  8. 学习记录 java 链表知识

    01.import java.util.HashMap; 02.import java.util.Scanner; 03.import java.util.Stack; 04. 05./** 06. ...

  9. Java链表的一些操作:

    [还有一些其他的算法提]http://blog.csdn.net/WalkingInTheWind/article/category/906980 [转]http://blog.csdn.net/lu ...

  10. 面试中的Java链表

    链表作为常考的面试题,并且本身比较灵活,对指针的应用较多.本文对常见的链表面试题Java实现做了整理. 链表节点定义如下: static class Node { int num; Node next ...

随机推荐

  1. Swift数据类型简介(二)

    整数 整数就是没有小数部分的数字,比如42和-23.整数可以是有符号(正.负.零)或者无符号(正.零). Swift 提供了8,16,32和64位的有符号和无符号整数类型.这些整数类型和 C 语言的命 ...

  2. js处理异常try{}catch(e){}

    MXS&Vincene  ─╄OvЁ  &0000021─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  3. OBD K线抓包

    14230 Link 命令:  const u8 LinkCmd14230[6] = { 0xC2, 0x33, 0xF1, 0x01, 0x00, 0xE7 }; 14230 Enter 命令: c ...

  4. Java调用脚本

    几个参考: java调用shell http://www.cnblogs.com/Seamanm/archive/2010/10/04/1842059.html java程序中调用linux命令    ...

  5. js-统计选项个数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 关于在官网上查看和下载特定版本的webrtc代码

    注:这个方法已经不适用了,帖子没删只是留个纪念而已 gclient:如果不知道gclient是什么东西 ... 就别再往下看了. 下载特定版本的代码: #gclient sync --revision ...

  7. linux dynamic debug 官方教程

    下载内核后,文档在:Documentation/dynamic-debug-howto.txt 中文版本:http://www.oschina.net/translate/dynamic-debug- ...

  8. python virtualenv

    一  安装 pip install virtualenvwrapper - 把下面这句加到~/.bash_profile里面,如不嫌麻烦,也可以每次都手动执行.source /usr/local/bi ...

  9. PCL点云库:Kd树

    Kd树按空间划分生成叶子节点,各个叶子节点里存放点数据,其可以按半径搜索或邻区搜索.PCL中的Kd tree的基础数据结构使用了FLANN以便可以快速的进行邻区搜索.FLANN is a librar ...

  10. Oracle使用经验总结

    oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多.Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库 ...