应用场景
下哈的新同桌小哼是个美女,小哈很想知道小哼的QQ号,就问了小哼,小哼为了考验小哈,就给了小哈一段加密数字
并告诉了小哈解密规则,规则就是:首先删除第一个数据,之后再将第二个数据移动到队尾,指导最后一个数,再将最后一个书删除,最后讲删除的数字连起来就是她的QQ号码了。
算法分析
要进行解密,首先要引入两个变量head 和 tail,head用来记录队列的队首,tail用来记录队尾的下一位,为什么不直接记录队尾呢,是因为当队列剩下最后一个元素时队首和队尾会重合,我们这里规定队首和队尾重合的时候,队列为空。
解密过程
上面讲了那么多,你可以对如何解密已经迫不及待了吧,那么接下来就直接上代码了
<pre name="code" class="cpp">int main(int argc, const char * argv[])
{
int q[102] = {0,6,3,1,7,5,8,9,2,4},head,tail;
//初始化队列
head = 1;
tail = 10;//tail执行队列最后一位的后一位
while (head < tail) {
printf("%d ",q[head]); //先打印第一个被移除的
head++; //移除第一个
q[tail] = q[head]; //将第二个添加到队尾
tail++;
//再次将队首移除
head++;
}
getchar() ;getchar();
return 0;
}
运行后就能得到小哼的QQ号了:
队列的概念
队列是一种特殊的线性数据结构,它只允许队首进行删除操作,成为出队,队尾进行添加操作,称为入队。当队首和队尾相等时(head = tail),称为空队列。
好了很晚了,今天就讲到这里,大家晚安