博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
队列实现qq解密
阅读量:6304 次
发布时间:2019-06-22

本文共 1623 字,大约阅读时间需要 5 分钟。

规则是这样的:首先将第 1个数删除,紧接着将第 2 个数放到这串数的末尾,再将第 3 个数删除并将第 4 个数放到这串数的末尾,再将第 5 个数删除……。直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是QQ。

假设是9位的qq。

解决思路:用队列的head指向给出乱序qq的第一个元素,让tail指向qq的末尾的下一个(这样做的目的是为了当head=tail,队列为空)。当删除时,只要head++,放到末尾时,将tail++就OK。

队列:队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,这称为“出队”,而在队列的尾部(tail)进行插入操作,这称为“入队”。当队列中没有元素时(即 head=tail),称为空队列。因此,队列满足“先进先出”的原则。

上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
 
typedef 
struct 
queue{
    
int 
queueArr[100];
//定义队列空间
    
int 
head;         
//队列头部
    
int 
tail;         
//队列尾部
}queue;
 
/*
解密qq
*/
int 
queueDecodeQQ ( 
int 
*queueQQ,
int 
head,
int 
tail ,
int 
*desQQ )
{
    
int 
index = 0;
    
if 
(( NULL == queueQQ )&&( NULL == desQQ))
    
{
        
return 
-1;
    
}
    
//进行解密
    
while
( head < tail )
//条件是不为空
    
{
        
desQQ[index] = queueQQ[head];
//将删除的数保留到desQQ数组,即就是真正的qq序列
        
head++;
        
queueQQ[tail] = queueQQ[head];
//将head放到尾部
        
tail++;
        
head++;
        
index++;
    
}
    
return 
0;
}
 
/*
主函数
*/
int 
main()
{
    
int 
index = 0;
    
//定义队列
    
queue queueQQ;
    
//定义目的qq存放数组
    
int 
desQQ[9] = {0};
    
//输入
    
printf
(
"请输入要解密的qq:"
);
    
for 
( ; index < 9; index++ )
    
{
        
scanf
(
"%d"
,&queueQQ.queueArr[index]);
    
}
    
//初始化对头和队尾
    
queueQQ.head = 0;
    
queueQQ.tail = 9;
//队列尾部应该指向实际队列的最后一个数的下一个,保证当tail = head队列为空。
    
//解密
    
queueDecodeQQ (queueQQ.queueArr,queueQQ.head,queueQQ.tail,desQQ);
    
//输出打印
    
for 
( index = 0; index < 9; index++ )
    
{
        
printf
(
"%d "
,desQQ[index]);
    
}
    
//换行
    
printf
(
"\n"
);
    
//停止程序,可以保留那个黑框框(doc命令框)便于查看
    
system
(
"pause"
);
    
return 
0;
}
本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1758886,如需转载请自行联系原作者
你可能感兴趣的文章
Ansible--playbook介绍
查看>>
浅谈代理
查看>>
php创建桌面快捷方式实现方法
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
TreeSet的用法
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>