啊哈算法 之 队列

6 篇文章 0 订阅
4 篇文章 0 订阅

应用场景

下哈的新同桌小哼是个美女,小哈很想知道小哼的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),称为空队列。
好了很晚了,今天就讲到这里,大家晚安


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值