输入1个数字和多个字符,中间均以空格隔开。假设数字取值为m(范围1~9),后面字符个数为n。
假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列
最后,按照出列的顺序输出这些字母,中间仍以空格隔开。取值范围:m为1到9, 字符个数n大于1小于20。
import java.util.Scanner;
class Node{
Node next=null;
char data;
public Node(char data){
this.data=data;
}
}
class MyList{
Node head=null;
Node tail=null;
public void addNode(char data){
Node node=new Node(data);
if(head==null){
head=node;
tail=node;
tail.next=head;
}
node.next=head;
tail.next=node;
tail=tail.next;
}
public int length(){
int length=1;
if(head==null){
return 0;
}
if(head==tail){
return 1;
}
Node tmp=head.next;
while(tmp!=null && tmp!=tail.next){
length++;
tmp=tmp.next;
}
return length;
}
public void delete(int m){
Node preNode=head;
Node tmp=preNode;
int length=length();
while(length>0){
for(int i=1;i<m;i++){
preNode=tmp;
tmp=tmp.next;
}
System.out.print(tmp.data+" ");
Node proNode=tmp.next;
preNode.next=tmp.next;
tmp=proNode;
length--;
}
}
}
public class CycleNumber {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
int m=Integer.parseInt(String.valueOf(s.charAt(0)));
char[] c=new char[s.length()-1];
for(int i=0;i<s.length()-1;i++){
c[i]=s.charAt(i+1);
}
MyList list=new MyList();
for(int j=1;j<c.length;j=j+2){
list.addNode(c[j]);
}
list.delete(m);
}
}