早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求java高手编程设有n个人站成一排,每一个人有一编号i(1≤i≤n),从左向右“1、2、1、2、...”报数,数到1的人出列,数到2的人立即站到队伍的最右端。报数过程反复进行,直到n个人都出

题目详情
求java高手编程
设有n个人站成一排,每一个人有一编号i(1≤i≤n),从左向右“1、2、1、2、...”报数,数到1的人出列,数到2的人立即站到队伍的最右端。报数过程反复进行,直到n个人都出列为止。已知n个人的原来的顺序,请写出他们的出列顺序。
帮帮忙~
▼优质解答
答案和解析
import java.util.Scanner;
import java.util.LinkedList;
public class Test
{
public static void getPerson(int number){
LinkedList list=new LinkedList();
for(int i=1;i<=number;i++){
list.add(i);
}
while(list.size()!=0){
System.out.print(list.element()+" ");//输出第一个元素,其实就是报数为1的人
if(list.size()==1) break;//如果链表大小为1,退出循环,如果为1了,接下来就不能执行下面的两个删除了
list.removeFirst();//出列了,把它删除
list.addLast(list.element());//删除了第一个,报数为2的人变为列表第一个,加入到列表最后,实际上也就是移到最后了
list.removeFirst();//已经把它加到最后了,这里删除它
}
}
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("输入人数:");
int num=in.nextInt();
System.out.println("出列顺序:");
getPerson(num);
}
}