啊哈算法 之 隊列

應用場景

下哈的新同桌小哼是個美女,小哈很想知道小哼的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),稱爲空隊列。
好了很晚了,今天就講到這裏,大家晚安


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章