猴子选大王(c语言)

描述

有n只猴子(编号从1到n),按顺时针方向围成一圈选大王。

规则是从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样重复下去,直到圈内只剩下一只猴子时,这只猴子就是大王。

格式

输入格式
输入只有一行,两个数据,分别是n和m

输出格式
输出一个数据,大王的编号

样例

输入样例
10 5
输出样例
3

题解及详细注释

本文用循环链表来做。当然也可以用模拟链表来做,各有所爱。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//这里创建一个结构体用来表示链表的结点类型
struct list
{
    int name;
    struct list *next;
};

int main()
{
    struct list *houzi,*head,*now;
    int m, n, a;
    a = 1;
    scanf("%d%d", &m,&n);
    houzi = (struct list *)malloc(sizeof(struct list));//动态申请一个空间,用来存放一个结点,并用临时指针houzi指向这个结点
    now = (struct list *)malloc(sizeof(struct list));///同上
    head = houzi;//指针head也指向houzi结点。及存着第一个猴子的指针
    houzi->name = 1;//第一个猴子的名字是1
    houzi->next=now;//设置当前houzi结点的后继指针指向now结点
    houzi = houzi->next;//由于上一行的操作,新的houzi指针指向now结点。这是一个新的猴子
    for (int i = 2; i <= m - 1; i++)//这个循环的内容跟上面的差不多。创建出多个猴子
    {
        houzi->name = i ;
        now = (struct list *)malloc(sizeof(struct list));
        houzi->next=now;
        houzi = houzi->next;
    }
    houzi->name = m;//这是最后一个猴子。要在循环之外创建
    houzi->next = head;//最后一个猴子的后继结点是第一个猴子
    houzi = head;//现在的猴子是第一个猴子了
    while (m > 1)//现在开始选大王。m=1时,表明只剩下一个猴子即猴大王,退出循环
    {
        while (a != n - 1 && houzi->next != NULL)
        {
            houzi = houzi->next;
            ++a;
        }
        a = 1;
        houzi->next = houzi->next->next;
        houzi = houzi->next;
        m = m - 1;
    }
    printf("%d",houzi->name);
}

在这里插入图片描述
写于2021年7月21日16:17分。


如果这篇文章对你帮助很大,麻烦帮忙,点下友情链接: 鱼儿项目网,进去之后切换几个页面,停留几十秒。感激不尽。本站采集全网自媒体,网赚类,电商营销课程。里面有一些免费项目大家也可以看看

目 录 摘 要 I ABSTRACT II 第一章 绪论 1 1.1 选题的背景 1 1.2 国内外状况 2 1.3 问题的提出 3 1.4 主要研究内容 3 1.5 论文的组织结构 3 第二章 相关理论及技术介绍 5 2.1 开发平台 5 2.1.1 MyEclipse 5 2.1.2 NetBeans 5 2.2 相关技术 5 2.2.1 XML 5 2.2.2 Dom4j 6 2.2.3 SOAP 6 2.2.4 WebService 7 2.2.5 WSDL 7 2.2.6 Velocity 8 2.2.7 Swing 8 2.2.8 Java反射 9 2.3 本章小结 9 第三章 服务开发平台的总体框架 10 3.1 前台可视化IDE的设计 11 3.2 后台的总体设计 12 3.2.1 后台RuntimeContainer容器管理模块设计概述 13 3.2.2 后台UDDI注册中心模块设计概述 14 3.2.3 后台SP Agent Builder代码生成模块设计概述 16 3.3 本章小结 20 第四章 服务生成工具SP Agent Builder的设计与实现 21 4.1 三层XML schema设计与解析模块的设计与实现 21 4.1.1 功能层XML schema的设计 21 4.1.2 表示层XML schema 的设计 24 4.1.3 传输层XML schema 的设计 24 4.1.4 三层XML文件解析的设计与实现 26 4.2 数据转换模块的设计与实现 28 4.2.1 目标数据格式介绍 28 4.2.2 对象与目标数据格式之间的转换 31 4.3 传输代理模块的设计与实现 35 4.3.1 网络传输协议 36 4.3.2 传输代理的运作流程 38 4.4 代码生成器模块的设计与实现 39 4.4.1 模板的设计 39 4.4.2 代码生成的运作流程 40 4.5 可视化编辑器模块的设计与实现 41 4.5.1 可视化编辑器的设计 41 4.5.2 可视化编辑器的运作流程 42 4.5 本章小结 42 第五章 系统实现 44 4.1 创建服务 44 4.2 编辑服务 48 4.3 删除服务 50 4.4 本章小结 51 第六章 结论 52 致 谢 53 参考文献 54 毕业设计小结 56 附录A XML数据类型和Java数据类型之间的映射规则 57 附录B 功能层XML schema的设计 58 附录C 表示层XML schema的设计 60 附录D 传输层XML schema的设计 61 附录E TXT文本的格式介绍 63
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m明月Java3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值