本帖最后由 xjandrew 于 2012-12-10 21:42 编辑
思路:
1.报数一二三
三出列
报数封装成对象,返回三的值
报数()
remove
removeFirst()
for循环控制报到三的人
报到的出列
else回去
直到(LinkList.size==2)
持续删除用LinkList
2.获取三出列
ArrayList
add(报数())
3.
对象:人
属性:序号- import java.util.*;
- public class BaoshuTest
- {
- public static void main(String[]args)
- {
- LinkedList<Person> list = new LinkedList<Person>();
- ArrayList<Person> al = new ArrayList<Person>();
-
- for(int i=1; i<=10; i++)
- {
- list.add(new Person(i));//添加总人数到list中
-
- }
- while(list.size()>2)//剩余人数在两个以上就调用报数
- {
- Person p = baoshu(list);
- if(p != null)
- al.add(p);
-
- }
- for(Person p : al)
- {
- System.out.println(p);
- }
- }
- public static Person baoshu(LinkedList<Person> list)
- {
- while(true)
- {
-
- for(int i=1;i<=3;i++)//实现报数一二三
- {
- Person p = list.removeFirst();
- if(i==3)
- return p;
- else
- list.add(p);
- }
-
- if(list.size()==2)
- break;
- }
- return null;
-
- }
- }
- class Person
- {
- private int num;
- Person(int num)
- {
- this.num = num;
- }
- public String toString()//高级for中的打印要自动调用toString(),否则直接找Object中的toString()去了
- {
- return num+"";
- }
- public int getID()
- {
- return num;
- }
- }
复制代码 |