小红给小明一串加密后的数字,同时告诉他解密规则:
首先将第一个数删除,紧接着将第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
++;
}
}
}