//循环列表
package 容器;
import java.util.Scanner;
public class 链表 {
//定义结点
static class Node{
int x;
int sum;
Node next;
public Node(int x,int sum){
this.x=x;
this.sum=sum;
}
}
public static void main(String []agrs){
Scanner sc=new Scanner(System.in);
System.out.println("请输入初始值M,总人数N:");
int M=sc.nextInt();
int N=sc.nextInt();
System.out.println("请输入各自的密码:");
//初始化头节点和循环链表,尾结点
Node first=new Node(1,sc.nextInt());
Node end=first;
for(int i=2;i<=N;i++)
{
Node firm=new Node(i,sc.nextInt());
end.next=firm;
end=end.next;
//end=(end.next=new Node(i,sc.nextInt()));
}
end.next=first;//首尾相接构成循环链表
System.out.println("出列顺序为:");
while(end!=end.next)
{
for(int i=1;i<M;i++)
end=end.next;
System.out.print(end.next.x+" ");
M=end.next.sum;
end.next=end.next.next;
}
System.out.print(end.x);
}
}
//ArrayList
package 容器;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class list {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList list = new ArrayList();
System.out.println("请输入M的初始数值:");
int M = sc.nextInt();
System.out.println("请输入总人数:");
int N = sc.nextInt();
int []sum=new int[1010];
for(int i=0 ;i<N;i++){
list.add(i+1);
sum[i]=sc.nextInt();
}
int i=-1;
int count=0;
while(list.size()!=0){
++i;
if(i== list.size()){
i=0;
}
++count;
//输出
if(count==M){
System.out.print(list.get(i)+ " ");
M=sum[(int) list.get(i)-1];
list.remove(i);
count=0;
i--;//修正
}
}
}
}