小红给小明一串加密后的数字,同时告诉他解密规则:
首先将第一个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删并将第4个数放到这串数的末尾,再将第5个数删除。。。。直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连载一起就是小明的QQ啦。
也可以使用结构体来实现队列的操作,下面这种写法虽然冗余了一些但是可以加强你对队列的理解。
C语言的结构体也可以用JAVA里面的类实现
小红给小明加密过的一串数是
9
6 3 1 7 5 8 9 2 4
解密后的输出为
6 1 5 9 4 7 2 8 3
代码示例:
import java.util.Scanner;
public class ExampleJiemi
{
public static void main(String[]
args) {
Scanner cin = new Scanner(System. in);
int n
= cin.nextInt();
int a[]
= new int[101];
for ( int i
= 0; i < n; i++) {
a[i] = cin.nextInt();
}
cin.close();
//初始化队列
int head
= 0;
int tail
= n;
while(head
< tail){ //当队列不为空的时候执行循环
//打印队首并将队首出队
System. out.print(a[head]+ "
");
head++;
//先将新队首的数添加到队尾
a[tail] = a[head];
tail++;
//再将队首出队
head++;
}
}
}
也可以使用结构体来实现队列的操作,下面这种写法虽然冗余了一些但是可以加强你对队列的理解。
使用C语言,代码如下:
#include<stdio.h>
struct queue
{
int data[100];
int head;
int tail;
};
int main()
{
struct queue
q;
int n
= 0;
//初始化队列
q.head = 0;
q.tail = 0;
scanf( "%d",&n);
for(int i
= 0;i < n;i++)
{
//依次向队列插入 n个数
scanf( "%d",&q.data[q.tail]);
q.tail++;
}
while(q.head
< q.tail) //当队列不为空的时候执行循环
{
//打印队首并将队首出队
printf( "%d",q.data[q.head]);
printf( " ");
q.head++;
//先将新队首的数添加到队尾
q.data[q.tail] = q.data[q.head];
q.tail++;
//再将队首出队
q.head++;
}
getchar();getchar();
return 0;
}
C语言的结构体也可以用JAVA里面的类实现
package chapter1_SortingOrder;
import java.util.Scanner;
class Queue{
int data[]
= new int[100];
//此处必须要定义一个数组对象而不是声明
int head;
int tail;
}
public class ExampleJiemiQQhao
{
public static void main(String[]
args) {
Scanner cin = new Scanner(System. in);
Queue q = new Queue();
q. head =
0;
q. tail =
0;
int n
= cin.nextInt();
for ( int i
= 0; i < n; i++) {
q. data[q. tail]
= cin.nextInt();
q. tail++;
}
cin.close();
while(q. head <
q. tail){
System. out.print(q. data[q. head]+ "
");
q. head++;
q. data[q. tail]
= q. data[q. head];
q. tail++;
q. head++;
}
}
}