java基于双向环形链表解决丢手帕问题的方法示例

这篇文章主要介绍了java基于双向环形链表解决丢手帕问题的方法,简单描述了丢手帕问题,并结合实例形式给出了Java基于双向环形链表解决丢手帕问题的步骤与相关操作技巧,需要的朋友可以参考下

本文实例讲述了java基于双向环形链表解决丢手帕问题的方法。分享给大家供大家参考,具体如下:

问题:设编号为1、2……n的几个小孩围坐一圈,约定编号为k(1=

我们现在用一个双向环形链表来解这一问题。先来看看下面这幅图:

圆圈代表一个结点,红色的指针指向下一个元素,紫色的指针指向上一个元素。first指针指向第一个元素,表明第一个元素的位置,cursor是游标指针,它的作用重大。那么这个环形的链表就可以模拟小孩排成的圆圈,下面是具体的代码:

 public class Test { public static void main(String[] args){ CycleLink cl=new CycleLink(5); //构造环形链表 System.out.println("html中文网测试结果:"); cl.print(); cl.setK(2); //设置从第几个小孩开始数数 cl.setM(3); //设置数几下 cl.play(); //开始游戏 } } class Child{ int no; Child nextChild; Child previousChild; public Child(int no){ this.no=no; } } class CycleLink{ Child first; Child cursor; int length; //从第几个小孩开始数 private int k=1; //数几下 private int m=1; //构造函数 public CycleLink(int len){ this.length=len; for(int i=1;i<=length;i++){ Child ch=new Child(i); if(i==1){ first=ch; cursor=ch; }else if(i1){ //数m下 for(int i=1;i

这个代码的基本框架是根据韩顺平的视频的。不过他用的是一个单向的链表,上面的代码注释的部分是用来找cursor所指向的元素的上一个元素的,是将整个链表转了一圈来实现的。这里我改成了双向链表,直接用一个cursor.previousChild就可以了。

运行结果:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

以上就是java基于双向环形链表解决丢手帕问题的方法示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java