猴子选大王 java_猴子选大王
猴子选大王
M只猴子要选大王,选举办法如下:所有猴子按1,2……n编号围成一圈,从第一号开始顺序报数1,2……m,凡是报m号的退出圈外,如此循环报数直到圈内只剩一只猴子时这只猴子就是大王。
数据结构:
猴子链表,循环
猴子属性值:判断是否落选
利用单向循环链表模拟此过程,输出选出的大王编号。
程序的设计思想:
(1)问题分析:“猴子选大王”问题是约瑟夫环问题的一个特例。由于本题目的数据元素个数不可知,所以可使用链表来动态的分配内存空间。而该问题又是一个不断的循环问题所以用循环链表来实现。
(2)总体设计:首先生成一个空链表,并给n个结点分配空间,让单链表的表尾指针指向头结点则生成一个带有n个结点的循环单链表。再给每只猴子建立顺序的编号。
现从第一个结点开始报数,依次顺序查找出报数为m的待出列的结点(猴子)通过q->next=p->next删除该结点后继续运行否则让q成
为p的前驱指针。最后当p->next==p时停止运行,得到p所指向的结点即为猴子选出大王的编号。
C语言程序源代码:#include
#include
#define n 8
#define m 3
typedef struct monkey
{
int num;
struct monkey *next;
} Monkey;
int main()
{
Monkey *p,*head,*q;
int i;
head=p=q=malloc(sizeof(Monkey));//建立头指针
for(i=1;i
{
p=malloc(sizeof(Monkey));
q->next=p;
q=p;
}
q->next=head; //建立循环链表
p=head;
printf("对猴子进行编号!\n");
for(i=1;i<=n;i++)
//给n只猴子分别建立顺序编号
{
p->num=i;
printf("%d号猴子:%d\n",p->num,p->num);
p=p->next;
}
i=0; //初始化
p=head;
while(1)
{
i++;
printf("%d号猴子报:%d\n",p->num,i);
if(p->next==p)
break; //判断还剩下最后一个结点时停止运行
if(i==m) //报道m的猴子淘汰
{
i=0;
printf("%d号猴被淘汰\n",p->num);
q->next=p->next;
p=q->next;
continue;
}
else
{
if(i==m-1) q=p;
p=p->next;
}
猴子选大王 java_猴子选大王相关推荐
- 猴子选大王 java_猴子选大王(java求解) | 学步园
n只猴子选大王,方法如下:按照1,2,3....n给猴子编号,然后按编号顺序坐成1圈,从1号猴子开始按编号顺序报数至m,报到m的猴子退出圈外,退出的猴子的下一只猴子重新从1开始报数至m,报到m的猴子退 ...
- 数据结构猴子选大王java_数据结构例子-猴子选大王
约瑟夫问题(猴子选大王): n只猴子要选大王,选举办法如下:所有猴子按1,2,-,n编号围坐一圈,从第一号开始按1,2,-,m报数,凡报m号的推出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴 ...
- 猴子选大王 java_基于java数据结构链表写的猴子选大王
[实例简介] 基于java数据结构链表写的猴子选大王,其实就是一个约瑟夫环问题,采用java数据结构链表写的.有点小问题.当输入一只猴子,报数为1时删除会出错.没有实现动态显示猴子的添加和删除. [实 ...
- react实现全选、取消全选和个别选择
react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo e ...
- vue 带全选和多选的表格怎么写_vue中使用计算属性巧妙的实现多选框的“全选”...
接下来我会以一个购物车的例子,来演示如果借助计算属性,精巧的实现多选框的全选功能.当然,有全选,自然对应的也还有取消全选. 以下这张gif图,就是最终的实现效果: 第一步,针对购物车每一个商品进行设置 ...
- html表单全选框,form表单里如何实现全选和全不选
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果. javascript实现全选和全不选效果: 1.首先你 ...
- jquery的全选,全不选,反选
jquery的全选,全不选,反选: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&q ...
- 隔行换色案例||全选和全不选||QQ表情选择||多选下拉列表左右移动
01.隔行换色.html <!DOCTYPE html> <html><head><meta charset="UTF-8">< ...
- 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现
编程笔试(解析及代码实现):猴子吃桃.猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个. 第二天早上又将剩下的桃子吃了一半,还是不过瘾,又多吃了一个.以后每天都吃前一天剩下的一半再加一个 ...
最新文章
- 1049. Counting Ones (30)
- TypeScript方法的定义
- 真实的linux系统是怎样的,只使用Linux系统是怎样一种体验?_科技数码通
- mendeley引用参考文献不显示_免费文献管理器Mendeley
- springmvc注解小示例(转)
- [html] 对于rtl网站的适配有哪些方案?
- mp3排序软件哪个好用_U盘加密软件_U盘防拷贝软件哪个好用?
- 【转】AndroidStudio升到最新版本(3.1.2)之后
- 初涉IPC,了解AIDL的工作原理及用法
- python中win32api_Python win32api.SetCursorPos方法代码示例
- 【两步稀疏表示法】基于两步稀疏表示法的小波变换的图像重建算法的MATLAB仿真
- 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
- selenium自动化中停止页面加载
- ESP32 LVGL8.1 ——event 事件 (event 17)
- 网易pop3服务器没有响应,网易“封杀”QQ邮箱?POP3服务已关闭
- gmx grompp
- 在c语言中开辟一个数组空间,c语言如何在动态的结构体数组开辟新空间
- sybase客户端SqlDbx中文乱码问题解决
- CASS中基于高程点并生成等高线的方法
- 一起来玩U3D之基础物理引擎
热门文章
- PHPCMS V9系统配置文件和模板目录
- mysql 改成无密码登录_mysql修改密码
- OpenCV_Canny图像边缘检测
- html+页面的背景透明,css设置背景透明 元素不透明
- IT人的日韩俄语歌单:已然被二次元的“恋爱循环”洗脑
- 计算机boss是什么东西,Boss. 是什么意思?
- Three.js Line2渐变色线条序列帧动画
- 深入理解 Python 异步编程
- java数组删除元素_java删除数组中的某一个元素的方法
- 一篇文章带你了解自动化测试开发