java用链表解约瑟夫环问题

1到20的数围成一个圈,隔两个取出一个,直到所有的数都被取出为止,求取出的数的顺序:package org.joseff.test;public class link {private int value;private link next;private link previous;public link getprevious() {return previous;}public void setprevious(link previous) {this.previous = previous;}public link(int value){this.value = value;}public int getvalue() {return value;}public void setvalue(int value) {this.value = value;}public link getnext() {return next;}public void setnext(link next) {this.next = next;}public link remove(){system.out.println(this.getvalue());link p = this.getprevious();link n = this.getnext();p.setnext(n);n.setprevious(p);return n;}}package org.joseff.test;public class test {public static void main(string[] args) {//initialize the link nodes.link t1 = new link(1);link first = t1;for(int i = 2 ; i <= 20 ; i++ ){link link = new link(i);t1.setnext(link);link.setprevious(t1);t1 = link;}t1.setnext(first);first.setprevious(t1);print(first);}public static void print(link link){//left the last nodeif(link.getnext() == link){system.out.println(link.getvalue() + " ");return;}link tmp = link;for(int i = 1 ; i < 3 ; i++ ){tmp = tmp.getnext();}link n = tmp.remove();print(n);}}结果:3 、6 、9 、12 、15 、18 、1 、5 、10 、14 、19 、4 、11 、17 、7 、16 、8 、2 、13 、20
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值