星空网 > 软件开发 > Java

Josephus环类问题,java实现

  写出一个双向的循环链表,弄一个计数器,我定义的是到三的时候,自动删除当前节点,很简单。

  

package Com;import java.util.Scanner;/* * 约瑟夫环问题,有n个人组成的圈,数到3的那个人出列,下个人继续从一开始 */public class Josephus {    public static void main(String[] args) {    Scanner s = new Scanner(System.in);    int n = Integer.parseInt(s.nextLine());    Node first = new Josephus().startRun(n );    int count = 1;    while(first.next != first) {      first = first.next;      count++;      if(count == 3) {        first.previous.next = first.next;        first.next.previous = first.previous;        first = first.next;        count = 1;      }    }    System.out.println("最后剩下来的数字为:"+first.n);  }    public Node startRun(int n) {    Node first = new Node();    first.previous = null;    first.n = n ;  //这里给链表赋值,倒叙    Node current = first;    Node last = first;    while((--n)>0) {      current.next = new Node();      current = current.next;      current.n = n;      current.previous = last;      last = current;    }    current.next = first;    first.previous = current;    return first;  }  class Node {    int n ;     Node next;    Node previous;  }}

 




原标题:Josephus环类问题,java实现

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流