美文网首页
重拾算法Day05-队列

重拾算法Day05-队列

作者: 面试小集 | 来源:发表于2016-11-05 19:08 被阅读12次

    解密QQ

    小哼问小哈QQ,小哈说了一串加密数字"6 3 1 7 5 8 9 2 4", 解密规则是:丢到第一个数字,将第二个放在其他数字后面;丢到第三个数字,将第四个放在其他数字后面;如此依次循环,QQ号是丢掉数字的排列("6 1 5 9 4 7 2 8 3")。
    数组写法

    #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;
    }
    

    结构体写法

    #include <stdio.h>
    
    struct queue
    {
        int data[100];  //队列主体,用来存储内容
        int head;   //队首
        int tail;   //队尾
    };
    
    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;
    }
    

    队列总结

    队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作(出队),而在队列的尾部进行插入操作(入队)。队列的特性:"先进先出"。

    相关文章

      网友评论

          本文标题:重拾算法Day05-队列

          本文链接:https://www.haomeiwen.com/subject/oqrguttx.html