循环报数

来源:互联网 发布:psp搜索数据 编辑:程序博客网 时间:2024/05/22 15:13

输入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);     
 }

}

 

0 0
原创粉丝点击