队列用法示例:解密QQ号

本文详细介绍了小红如何通过删除和重新排列一组加密数字来解密出小明的QQ号码的过程,并提供了相应的Java代码示例。文章还进一步解释了如何使用队列操作来实现这一过程,并给出了C语言和Java类的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小红给小明一串加密后的数字,同时告诉他解密规则:
首先将第一个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删并将第4个数放到这串数的末尾,再将第5个数删除。。。。直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连载一起就是小明的QQ啦。
小红给小明加密过的一串数是
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++;
           }          
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值