重拾算法Day05-隊(duì)列

解密QQ

小哼問小哈QQ,小哈說了一串加密數(shù)字"6 3 1 7 5 8 9 2 4", 解密規(guī)則是:丟到第一個(gè)數(shù)字,將第二個(gè)放在其他數(shù)字后面;丟到第三個(gè)數(shù)字,將第四個(gè)放在其他數(shù)字后面;如此依次循環(huán),QQ號(hào)是丟掉數(shù)字的排列("6 1 5 9 4 7 2 8 3")。
數(shù)組寫法

#include <stdio.h>

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;
    
    while (head < tail) {
        // 輸出,即丟棄
        printf("%d ", q[head]);
        head ++;    //指向最新頭部
        
        // 排到最后
        q[tail] = q[head];
        tail ++;    //指向最新尾部
        
        head ++;    //指向最新頭部
    }

    return 0;
}

結(jié)構(gòu)體寫法

#include <stdio.h>

struct queue
{
    int data[100];  //隊(duì)列主體,用來存儲(chǔ)內(nèi)容
    int head;   //隊(duì)首
    int tail;   //隊(duì)尾
};

int main(int argc, const char * argv[]) {
    
    struct queue q;
    q.head = 1;
    q.tail = 1;
    for (int i=1; i<=9; i++) {
        scanf("%d", &q.data[q.tail]);
        q.tail ++;
    }
    
    while (q.head < q.tail) {
        printf("%d ", q.data[q.head]);
        q.head ++;
        
        q.data[q.tail] = q.data[q.head];
        q.tail ++;
        q.head ++;
    }
    
    return 0;
}

隊(duì)列總結(jié)

隊(duì)列是一種特殊的線性結(jié)構(gòu),它只允許在隊(duì)列的首部(head)進(jìn)行刪除操作(出隊(duì)),而在隊(duì)列的尾部進(jìn)行插入操作(入隊(duì))。隊(duì)列的特性:"先進(jìn)先出"。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容