解密QQ号--队列
2017-05-01 16:05
281 查看
小明新学期有了新同桌,想和新同桌认识一下,就询问新同桌的QQ号,新同桌平时喜欢玩解密游戏,就给新同桌一串加密的数字,解密规则如下:首先将第一个数删除,紧接着将第二个数放到这串数的末尾,再将第三个数删除,将第四个数放到这串数的末尾,再将第五个数删除……直到剩下最后一个数,将最后一个数删除,按照刚才顺序,把删除的数连在一起就是正确的QQ号。
这串加密的数字是“1752251268”,先用笔算一下,偷偷告诉你,正确答案是:1521675822.
这个方法要用队列来实现比较轻松一点。
用整形变量head记录队列的队首(第一位),tail用来记录队列的队尾(最后一位)的下一个位置。
队列为空:队列和队尾重合
队首删除:head++;
新增一个数:q[tail] = x; tail++;
代码实现:
队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,即就是出队操作,在队列尾部(tail)进行插入操作,即就是入队操作。当队列中没有元素,即就是head == tail,称为空队列。
用队列实现:
这串加密的数字是“1752251268”,先用笔算一下,偷偷告诉你,正确答案是:1521675822.
这个方法要用队列来实现比较轻松一点。
用整形变量head记录队列的队首(第一位),tail用来记录队列的队尾(最后一位)的下一个位置。
队列为空:队列和队尾重合
队首删除:head++;
新增一个数:q[tail] = x; tail++;
代码实现:
#include <iostream> using namespace std; int main() { int q[] = {0, 1, 7, 5, 2, 2, 5, 1, 2, 6, 8}; int head = 1; int tail = sizeof(q)/sizeof(q[0]); // 队列中有十个元素,tail指向队尾的后一个位置 int i = 0; while(head < tail) //队列不为空时进行循环 { //打印队首并将队首出队列 cout<<q[head]<<" "; head++; //先将新队首的数添加到队尾 q[tail] = q[head]; tail++; //再将队首出列 head++; } system("pause"); return 0; }
队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,即就是出队操作,在队列尾部(tail)进行插入操作,即就是入队操作。当队列中没有元素,即就是head == tail,称为空队列。
用队列实现:
#include<iostream> using namespace std; struct queue { int data[100];//队列主体,存储内容 int head; //队首 int tail;//队尾 }; int main() { struct queue q; //初始化队列 q.head = 1; q.tail = 1; for(int i=1; i<=10; ++i) { cin>>q.data[q.tail]; q.tail++; } while(q.head < q.tail)//d队列不为空时进行循环 { //打印队首将队首出队列 cout<<q.data[q.head]; q.head++; //将新队首添加到队尾 q.data[q.tail] = q.data[q.head]; q.tail++; //将队首出队 q.head++; } cout<<endl; system("pause"); return 0; }
相关文章推荐
- 队列实现qq解密
- 队列浅析[解密QQ号]
- 【坐在马桶上看算法】算法4:队列——解密QQ号--作者:ahalei
- 【啊哈!算法】算法4:解密QQ号——队列
- 队列——解密QQ号
- 解密QQ号——队列
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【算法】解密 QQ 号——使用队列的方法
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【一周一算法】算法4:解密QQ号——队列
- 队列——解密QQ号
- 队列——解密QQ号
- 坐在马桶上学算法@队列——解密QQ号
- 解密QQ(队列)
- 【坐在马桶上看算法】算法4:队列――解密QQ号
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 解密QQ号——队列
- 队列——解密QQ号
- tianchai 12012 解密QQ号 (数组实现队列)
- 队列的结构体封装实现(啊哈算法版,以解密QQ号为例)