当前位置: 代码迷 >> Java相关 >> 帮忙做一道数据结构的题目
  详细解决方案

帮忙做一道数据结构的题目

热度:314   发布时间:2010-05-16 20:56:11.0
帮忙做一道数据结构的题目
有一群人组成一个圈。从头开始按照顺时针方向从1开始依次报数。报到到9的人就离开圈子。其左手边的人接着从1开始报数。依此进行,直到剩最后一个人为止。
谢谢咯!!!!!!!
搜索更多相关的解决方案: 数据结构  

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-16 13:19:21
linjx0123

等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
  得分:2 
有点无语哦,在你另外一个帖子里面有一道行酒令的类似题目,那里已经给你做了一个例子,所谓举一反三,要是楼主自己认真看的话,这道题目自己也会做的。问题目只想知道结果,而不去了解为什么这么做,这是很悲哀的一件事情
----------------解决方案--------------------------------------------------------
定义一个数组,类型为bool型。默认为false;
用循环,被点到的下标进行判断数组的该下标是否为true,如果不是,则将改下标改为true;
依此类推。。
----------------解决方案--------------------------------------------------------
哦,不好意思啊,我是知道这道题目用数组做出来的具体代码,不过我现在是希望能用链表方法把代码写出来,之前说得不清楚,真是不好意思了。希望高手能用链表来把这道题目的代码写出来,十分感谢了!
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-19 03:21:30
linjx0123

等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
  得分:0 
回复 5楼 一梦钧天
链表结构跟其他的表结构,只是存储方式上的区别,而具体的操作,都是差不多的,因为都实现同一个接口list。
在这道题目上,也就是把arraylist换成linkedlist就行了。

我想楼主你是不是想自己写个链表呢,如果这样的话,这个题目并不是在问约瑟夫环的算法,而是问链表的数据结构。

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-19 06:42:48
linjx0123

等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
  得分:0 
不需要用两个循环,一个就够了
程序代码:
public static void main(String args[]) {
        List<Integer> a = new ArrayList<Integer>();
        for (int i = 1; i <= 500; i++) {
            a.add(i);// 把每个小朋友的号码依次放入.
        }
        int num=0,currentIndex=0;
        while (a.size() > 1) {
            num++;
            if(num==3){
                a.remove(currentIndex);
                currentIndex--;
                num=0;
            }
            currentIndex++;
            if(currentIndex>=a.size())
                currentIndex=0;
        }
        System.out.println("最后一个小朋友的号码是: " + a.get(0));
    }

----------------解决方案--------------------------------------------------------
  相关解决方案