每日知识点-队列
题目描述:
给一个加密过的QQ号,首先将第一个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是QQ号,并把该QQ号输出。
代码-数组实现方法
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输入n和数
int n = sc.nextInt();
int [] q = new int [102];
for(int i=0;i<n;i++) {
q[i] = sc.nextInt();
}
int head = 0;
int tail = n;
keyQueue(q,head,tail);
}
private static void keyQueue(int [] q,int head,int tail) {
while(head<tail) {
System.out.println(q[head]+" ");
head++;
q[tail] = q[head];
tail++;
head++;
}
}
}
代码-ArrayList实现方法
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
//输入n和数
int n = sc.nextInt();
for(int i=0;i<n;i++) {
list.add(sc.nextInt());
}
int head = 0;
int tail = n;
keyQueue(list,head,tail);
}
private static void keyQueue(ArrayList<Integer> list, int head, int tail) {
while(head<tail) {
System.out.println(list.get(head)+" ");
head++;
if(head<tail) {
list.add(list.get(head));
}
tail++;
head++;
}
}
}