• 5-4 jmu-报数游戏 (15分)


    #include
    #include
    typedef int ElemeType;
    typedef struct cod
    {
        ElemeType data[100001];
        int rare,front;
        int MaxSize;
    } CirQueue;
    CirQueue *InitCQueue() //将队列置为空
    {
        CirQueue *q=(CirQueue *)malloc(sizeof(struct cod));
        q->rare=q->front=0;
        q->MaxSize=100001;
        return q;
    }
    int EnCqueue(CirQueue *q,ElemeType x) //入队
    {
        if(((q->rare)+1)%(q->MaxSize)==q->front)//判断队列是否满了
        {
            printf("The Queue is flow!!!!\n");
            return 0;
        }
        q->data[q->rare]=x;
        q->rare=(q->rare+1)%(q->MaxSize);//将对应的下表向后移动
        return 1;
    }
    int DeCqueue(CirQueue *q,ElemeType *x) //出队
    {
        if(q->rare==q->front) //判断表是否为空
        {
            printf("\nGame over!!!!!!!!\n");
            return 0;
        }
        *x=q->data[q->front];
        q->front=(q->front+1)%(q->MaxSize);//将对应的下表向后移动
        return 1;
    }
    //int CQueueLength(CirQueue *q) //计算出当前的元素的个数
    //{
    //    return (q->rare-q->front+q->MaxSize)%q->MaxSize;
    //}
    int test()
    {
        CirQueue *q=InitCQueue();
        int count;
        int key;
        int con;
        int cache;
        scanf("%d",&count);
        scanf("%d",&con);
        if(con>count){
            printf("error!");
            return 0;
        }
        cache=con;
        int i=1;
        while(count--){
            EnCqueue(q,i++);
        }
        while(q->rare!=q->front)
        {
            while(--con){//跳过前面的值
            DeCqueue(q,&key);//先取出值
            EnCqueue(q,key);//再次存入值
            }
            if(((q->front)+1)%(q->MaxSize)==q->rare)//判断最后一个不加上空格
            {
                DeCqueue(q,&key);//取除但是不存入
                printf("%d",key);//显示取出的值
                break;
            }
            if(q->rare!=q->front)
            {
                DeCqueue(q,&key);//取除但是不存入
                printf("%d ",key);//显示取出的值
            }
            con=cache;//让计数器回到原来的值
        }
    }
    int main()
    {
    //    CirQueue *q=InitCQueue();
    //    int count;
    //    int x;
       int value;
    //    scanf("%d",&count);//给定要输入的个数
    //    while(count--) //为每一个数进行赋值
    //    {
    //        scanf("%d",&x);
    //    }
    //    //下面是正常遍历的结果,因为会与后面的生死者游戏冲突所以这里我把它注释掉了
       while(DeCqueue(q,&value)){
           printf("%d\t",value);
       }
        //实现12的生死者游戏
        test();
        return 0;
    }
  • 相关阅读:
    【比较mybatis、lazy、sqltoy、lambda、操作数据 】操作批量新增、分页查询【一】
    容器的通俗讲解
    Unity 设置窗口置顶超级详解版
    SpringMVC13-注解配置SpringMVC
    2023年入职/转行网络安全,该如何规划?
    「go查漏补缺」命名规则以及 GROM 结构体的应用
    常用的分布式事务解决方案
    如何在Cocos中绘制一面国旗祝祖国生日快乐、繁荣昌盛
    单元测试框架怎么搭?来看看新版Junit5的这些神奇之处吧
    python多线程编程: 如何暴力但不失优雅地关闭线程
  • 原文地址:https://blog.csdn.net/lyshark_lyshark/article/details/126793148