zoukankan      html  css  js  c++  java
  • 队列学习总结

    规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,
    再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是要求的数,
    给一串数是“6 3 1 75 8 9 2 4”输出6 1 5 9 4 7 2 8 3。
    
    #include <stdio.h>
    int main()
    {
        int q[102]={0,6,3,1,7,5,8,9,2,4},head,tail;
        int i;
        //初始化队列
        head=1;
        tail=10; //队列中已经有9个元素了,tail执向的队尾的后一个位置   
        while(head<tail) //当队列不为空的时候执行循环
        {
            //打印队首并将队首出队
            printf("%d ",q[head]);
            head++;
            //先将新队首的数添加到队尾
            q[tail]=q[head];
            tail++;
            //再将队首出队
            head++;
        }
       
            return 0;
    }
    
    队列将是我们今后学习广度优先搜索以及队列优化的Bellman-Ford最短路算法的核心数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)
    封装为一个结构体类型,如下
    
    #include <stdio.h>
    struct queue
    {
        int data[100];//队列的主体,用来存储内容
        int head;//队首
        int tail;//队尾
    };
    int main()
    {
        struct queue q;
        int i;
        //初始化队列
        q.head=1;
        q.tail=1;
        for(i=1;i<=9;i++)
        {
            //依次向队列插入9个数
            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;
    }
  • 相关阅读:
    使用 Dockerfile 自定义 Nginx 镜像
    Windows下Rancher复制Pod内文件到本地
    SSL基础知识及Nginx/Tomcat配置SSL
    linux内核源码
    strace:跟踪进程的系统调用 、ltrace:跟踪进程调用库函数,runlevel & init & service
    C10K,C10M问题
    操作系统
    深入理解GOT表和PLT表
    为什么 List<Struct> 在 C# 中的分配速度比 List<Class> 快 15 倍
    如何计算时间复杂度
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4297933.html
Copyright © 2011-2022 走看看