约瑟夫问题
2015-05-21 12:20
176 查看
package 约瑟夫问题; public class MainClass { public static void main(String[] args) { Cyclink cl = new Cyclink(); cl.setLen(1000000000); cl.createLink(); //cl.print(); int k=3; cl.play(1, 3); } } class Node{ int num; Node next; public Node(int num) { this.num = num; } } class Cyclink{ Node firstnode=null;//第一个节点 Node temp=null; int len=0;// 链表为0 public void setLen(int len){ this.len=len; } public Cyclink() { } public void createLink(){ for (int i=1;i<=len;i++){ if (i==1){ Node node=new Node(i); firstnode=node; temp=node; }else{ if(i==len){ //最后一个节点 Node node=new Node(i); temp.next=node; temp=node; temp.next=firstnode; }else{ Node node=new Node(i); temp.next=node; temp=node; } } } } public void print(){ Node temp=firstnode ; do{ System.out.println(temp.num); temp=temp.next; }while (temp!=firstnode); } public void play(int k,int m){ //从k开始数,数m次 Node temp=firstnode ; //找到K在哪里 for(int i=1;i<k;i++){ temp=temp.next; } while(len!=1){ //s数m次 for (int i=1;i<m;i++){ temp=temp.next; } //找到m之前的那个节点 Node temp2=temp; while(temp2.next!=temp){ temp2=temp2.next; } //删除 System.out.println(temp.num); temp2.next=(temp.next); temp=temp.next; len--; } //最后一个 System.out.println("最后"+temp.num); } }
相关文章推荐
- 百练-约瑟夫问题
- 约瑟夫问题
- Hihocoder 约瑟夫问题
- poj3517:约瑟夫问题的数学解法
- VC++2012编程演练数据结构《2》单循环链表与约瑟夫问题
- POJ 1012 && HDU 1443 Joseph(约瑟夫问题)
- luoguP1996 约瑟夫问题
- 华为机试 - 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题求解
- 约瑟夫出圈问题
- 数据结构 C语言 约瑟夫问题
- C++循环链表实现约瑟夫问题
- 【数据结构和算法分析】循环链表及约瑟夫问题
- 【codevs 1282】约瑟夫问题
- oj 2746 约瑟夫问题
- 约瑟夫问题的数学方法
- (转)约瑟夫问题
- java学习笔记之链表(约瑟夫问题)