m0_74539947 2022-11-15 01:48 采纳率: 100%
浏览 13
已结题

用循环队列解决约瑟夫环问题

int deQueue(SqQueue &sq,ElemType &x) //出队元素 x
{
    SqQueue sq1;
    int i=1;
    int k,m;
    scanf("%d",&k);//进队元素个数
    scanf("%d",&m);
    while(sq1.rear!=sq1.front)//判断循环条件  队不空时循环
    {
        if (i%m!=0)
            i++;
    else //即i%m=0
    {
        sq1.front=(sq1.front+1) % MaxSize; //队头循环进 1
    x=sq1.data[sq1.front];
    i=1;//出队之后重置i=1
    }

    }
    return 1;
}

void expand_action()
{
    ElemType t;
    SqQueue sq1;
    InitQueue(sq1);
    EnQueue(sq1,'h');
        EnQueue(sq1,'i');
            EnQueue(sq1,'j');
                EnQueue(sq1,'k');
                    EnQueue(sq1,'l');
                        EnQueue(sq1,'m');    //元素进队
                        while(!QueueEmpty(sq1)) //队不空循环
                        {
                            deQueue(sq1,t); //出队元素 e
                            printf("%c ",t); //输出元素 e
                        }
                        printf("\n销毁队列\n");
                        DestroyQueue(sq1);

}
以上是我的代码片 有很多地方想不太明白

img

他的思路有点不懂 为什么没到m值的人要出队呢 不应该是数到m出 然后重置i值继续循环吗?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月23日
    • 创建了问题 11月15日

    悬赏问题

    • ¥15 微软硬件驱动认证账号申请
    • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
    • ¥15 GPT写作提示指令词
    • ¥20 如何在cst中建立这种螺旋扇叶结构
    • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
    • ¥20 关于DAC输出1.000V对分辨率和精度的要求
    • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
    • ¥15 哪位能做百度地图导航触点播报?
    • ¥15 请问GPT语言模型怎么训练?
    • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角